Как использовать основную графику iOS для постепенного рисования большого набора данных в одном изображении?
У меня есть код, который готов обрабатывать весь набор данных одновременно (более 100 000 прямоугольников) и создает одно изображение. Это очень длительная операция, и я хочу, чтобы этот набор данных рисовался постепенно по 1000 прямоугольников за раз, отображая эти небольшие обновления изображения (например, изображения, загруженные из Интернета в 90-х годах)
Мои вопросы: оставлю ли я ссылку на один и тот же context
на протяжении всей операции и просто добавлю к ней элементы? - ИЛИ - Должен ли я захватывать текущее изображение, используя UIGraphicsGetImageFromCurrentImageContext()
, затем рисовать его в новом контексте и рисовать дополнительные прямоугольники поверх него?
Бонусный вопрос - правильный ли это подход, если я хочу использовать несколько потоков для добавления к одному изображению?
let context = UIGraphicsGetCurrentContext()!
context.setStrokeColor(borderColor)
context.setLineWidth(CGFloat(borderWidth))
for elementIndex in 0 ..< data.count {
context.setFillColor(color.cgColor)
let marker = CGRect(x: toX(elementIndex),
y: toY(elementIndex),
width: rectWidth,
height: rectHeight)
context.addRect(marker)
context.drawPath(using: .fillStroke)
}
// Save the context as a new UIImage
let myImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let cgImage = myImage?.cgImage,
let orientation = myImage?.imageOrientation {
return UIImage(cgImage: cgImage, scale: 2, orientation: orientation)
}