Подтвердить что ты не робот

Какая разница между CALayer -drawInContext: и -renderInContext:?

Какая разница между CALayer -drawInContext: и -renderInContext:?

4b9b3361

Ответ 1

При предоставлении пользовательского содержимого, созданного Quartz, для отображения внутри CALayer, вы можете переопределить -drawInContext: и сделать свой собственный рисунок там. Это похоже на -drawRect: для UIView или NSView. Кроме того, вы можете установить другой класс в качестве делегата CALayer и реализовать -drawLayer:inContext:, чтобы предоставить настраиваемый контент стандартным CALayer.

Вы не переопределяете -renderInContext:, но вместо этого вы можете вызывать это на уровне слоя, чтобы отобразить его и все его подслои в конкретном контексте Core Graphics. Обратите внимание, что это не будет отображать определенные типы слоев (например, с содержимым OpenGL). Он также не ведет себя так, как вы ожидали при рендеринге в контексте PDF, где слои будут выступать в виде растровых прямоугольников вместо чистых векторных элементов. Чтобы обойти это, вы можете захотеть проверить концепцию CPTLayer каркаса Core Plot, где мы обходим обычный процесс рендеринга, чтобы сохранить векторы в PDF файле, созданном из нашего подкласса CALayer.