какой контекст передается в drawLayer: inContext :? - PullRequest
4 голосов
/ 26 февраля 2010

В разработке для Iphone я хочу нарисовать контекст в слое. Тогда вопрос:

Какой именно контекст передается в drawLayer: inContext :? Это контекст содержимого слоя или контекст UIview?

Если это контекст UIView, то какой это UIView?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 26 февраля 2010

Передаваемый контекст принадлежит CALayer, также возвращаемому этим методом делегата. Обычно это контекст отображения, но это также может быть контекст изображения или PDF, если слой нарисован вручную с помощью -renderInContext:.

CALayers могут существовать сами по себе или использоваться в качестве поддержки UIView. Все UIViews имеют слой позади них, который обрабатывает фактическое отображение содержимого этого представления. Рисование в представлении фактически рисует на его слое, и, аналогично, рисование в CALayer, поддерживающем UIView, будет отображаться для представления.

Как я уже сказал, вы можете создавать слои CALay, которые существуют как отдельные объекты, и добавлять их в существующие слои в качестве подслоев для отображения. В какой-то момент потребуется UIView, в котором размещены все эти подслои в пределах его заднего слоя, чтобы эти слои были видны на экране iPhone.

Обратите внимание, что в соответствии с ссылкой на класс UIView :

Поскольку вид является слоем делегат, вы никогда не должны устанавливать рассматривать как делегат другого CALayer объект. Кроме того, вы никогда не должны изменить делегата этого слоя.

Это означает, что для слоя UIView вы будете обрабатывать метод делегата внутри UIView почти во всех случаях, поэтому слой, переданный этому методу, будет слоем представления. Подслоям может быть что угодно в качестве делегата, поскольку они не привязаны к конкретному представлению.

1 голос
/ 26 февраля 2010

Здесь есть некоторая информация: Предоставление содержимого слоя

Если вам нужно нарисовать содержимое слоя, а не загружать его из изображения, вы реализуете drawLayer: inContext: делегатметод.Делегату передается слой, для которого требуется контент, и CGContextRef для рисования контента.

Как правило, это контекст вашего объекта делегата.В случае UIVIew само представление является делегатом.

...