В чем разница между CALayer -drawInContext: и -renderInContext:?В чем разница между CALayer -drawInContext: и -renderInContext :?
ответ
При предоставлении пользовательского контента с кварцевым рисунком для отображения внутри CALayer вы можете переопределить -drawInContext:
и сделать свой собственный рисунок там. Это похоже на -drawRect:
для UIView или NSView. Кроме того, вы можете установить другой класс в качестве делегата CALayer и реализовать -drawLayer:inContext:
для предоставления настраиваемого контента стандартным CALayer.
Вы не переопределяете -renderInContext:
, но вместо этого вы можете называть это на слое, чтобы отобразить его и все его подслои в конкретный контекст Core Graphics. Обратите внимание, что это не будет отображать определенные типы слоев (например, с содержимым OpenGL). Он также не ведет себя так, как вы ожидали при рендеринге в контексте PDF, где слои будут выступать в виде растровых прямоугольников вместо чистых векторных элементов. Чтобы обойти это, вы можете проверить Core Plot framework's CPTLayer implementation, где мы обходим обычный процесс рендеринга, чтобы сохранить векторы в PDF, сгенерированные из нашего подкласса CALayer.
Основной участок перемещен в [github] (https://github.com/core-plot) – lazi74