Использование непрозрачных слоев в Quartz 2d вместо рисования в слое вида - PullRequest
0 голосов
/ 17 апреля 2011

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

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

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

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

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

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

1 Ответ

0 голосов
/ 18 апреля 2011

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

Это забавная игра.Скоро я пойму настроение!

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

...