Какая разница между CALayer -drawInContext: и -renderInContext:?
Какая разница между CALayer -drawInContext: и -renderInContext:?
Ответ 1
При предоставлении пользовательского содержимого, созданного Quartz, для отображения внутри CALayer, вы можете переопределить -drawInContext:
и сделать свой собственный рисунок там. Это похоже на -drawRect:
для UIView или NSView. Кроме того, вы можете установить другой класс в качестве делегата CALayer и реализовать -drawLayer:inContext:
, чтобы предоставить настраиваемый контент стандартным CALayer.
Вы не переопределяете -renderInContext:
, но вместо этого вы можете вызывать это на уровне слоя, чтобы отобразить его и все его подслои в конкретном контексте Core Graphics. Обратите внимание, что это не будет отображать определенные типы слоев (например, с содержимым OpenGL). Он также не ведет себя так, как вы ожидали при рендеринге в контексте PDF, где слои будут выступать в виде растровых прямоугольников вместо чистых векторных элементов. Чтобы обойти это, вы можете захотеть проверить концепцию CPTLayer каркаса Core Plot, где мы обходим обычный процесс рендеринга, чтобы сохранить векторы в PDF файле, созданном из нашего подкласса CALayer.