Использование слоев, сгенерированных непрозрачностью, в Quartz 2d вместо рисования на слое представления

Во-первых, будь со мной нежнее. Я новичок в программировании на Objective C и iOS. Я только что купил копию Opacity и играю со слоями. Пока что мой единственный успех с оценкой А - это спроектировать и успешно создать свой собственный дизайн калькулятора - так что я еще не дошел до этого!

В частности, я хочу знать, как использовать подклассы Opacity CALayer для «замены» слоя поддержки в UIView. Добавление подслоев к существующему слою представления достаточно очевидно - и мне удалось заставить это работать - но как мне использовать подкласс Opacity CALayer для обеспечения начального содержимого слоя поддержки представления? Я пробовал скопировать код drawInContext из подкласса Opacity в drawRect моего подкласса UIView, в котором размещается прокси-представление для свойства «view» контроллеров, но (по какой-то причине я не могу понять) это не сработало.

Я предполагаю, что исходный поддерживающий слой представления - это элемент «0» в массиве слоев? Моя конечная цель - иметь только мои слои позади представления без необходимости «игнорировать» исходный.

Если есть шанс, что доктор Брэд Ларсон может это прочитать; ... Я смотрел ваши Quartz 2D и анимационные видео снова и снова, и я прочитал все копии ваших заметок по курсу, которые я могу достать, но все Примеры, которые я нашел, начинаются с изображения, уже находящегося в представлении хостинга - на которое добавлено больше слоев, что на самом деле не то, что мне нужно. Я также прочитал Руководство по ранчо Big Nerd и получил все работы Конвея и Хиллегасса пример кода тоже, но - я буду черт возьми - они также начинаются с изображения, уже находящегося в представлении!

Если кто-нибудь может мне помочь - просто укажите мне на соответствующую документацию, пожалуйста, не утруждайтесь написанием здесь огромных траншей кода - я был бы серьезно признателен.

В.В. PS: Я намеренно НЕ использую IB, так как я хочу сначала понять основную механику Cocoa Touch, и я не буду использовать точечную нотацию в принципе :-). (Смотри мой профиль!).


person VectorVictor    schedule 17.04.2011    source источник


Ответы (1)


Уловка состоит в том, чтобы переопределить метод класса «layerClass» представления, чтобы он был подклассом базового уровня, который необходим, прежде чем прибивать другие уровни к иерархии. Это создает базовый (неявный) уровень представления, когда создается экземпляр представления, а затем я могу потом опустить другие мои слои.

Это забавная игра. Я скоро получу настрой!

Этот метод заметно отличается от того же требования с использованием NSViews, которые имеют метод экземпляра setLayer, который можно использовать для изменения неявного уровня ПОСЛЕ создания экземпляра. Дорогостоящая процедура, не предлагаемая для легкого объекта, такого как UIView.

person VectorVictor    schedule 18.04.2011