2010-03-30 2 views

ответ

25

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

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

+0

Основной участок перемещен в [github] (https://github.com/core-plot) – lazi74