У меня есть приложение, в котором я делаю несколько пользовательских чертежей, несколько линий на градиентном фоне, например, (игнорируйте текст, они просто UILabels):
http://prehensile.co.uk/outgoing/Screenshot2010-06-09at12.22.32.png
На данный момент все это делается путем запуска нового CGContext, рисования материала в нем с помощью CGContextDrawLinearGradient и CGContextStrokePath, а затем, наконец, сохранения полученного изображения с помощью UIGraphicsGetImageFromCurrentImageContext.Информация о позиционировании рассчитывается, пока я размечаю эти метки, так что это будет PITA (и дублирование усилий), чтобы вычислить все заново, когда содержащий UIView будет нарисован с помощью drawRect, поэтому я рисую его передвремя в UIImage.Все работает отлично, пока все хорошо.
Однако у меня есть скрытое подозрение, что для рисования может быть более эффективно использовать CALayers.Мое (поверхностное) понимание различия между этими двумя подходами состоит в том, что CALayer больше похож на набор инструкций для рисования материала и поэтому занимает меньше памяти, пока он фактически не отображается на экране, в то время как предварительное рисование всего в UIImage означает, чтоу вас все время в памяти всплывает чертовски великолепное растровое изображение, независимо от того, нарисовано оно или нет.
Это правильное понимание?Что обычно считается лучшим способом рисования пользовательских изображений на iPhone?