iPhone необходимо получить контекстную ссылку CGContextRef для вложенного представления - PullRequest
0 голосов
/ 25 мая 2009

Я использую IBoutlet, чтобы получить ссылку на Sub-View, который я добавил в основной View в конструкторе интерфейса, но так как это не даст мне доступ к drawRect: я не смогу получить контекст рисовать на. Есть ли в любом случае я все еще могу получить графический контекст, чтобы я мог рисовать на дополнительном представлении? Как бы я пошел по этому поводу?

Ответы [ 3 ]

3 голосов
/ 25 мая 2009

Вы не можете так рисовать; вы должны рисовать в ответ на вызов drawRect, а не в любое время, как позволяют некоторые фреймворки.

Правильный способ сделать это: создать подкласс UIView в Xcode. Переключитесь на Интерфейсный Разработчик, выберите ваше подпредставление и измените его «Идентичность класса» (в разделе «Инструменты> Инспектор идентификации») на имя вашего нового подкласса.

Тогда в вашем подклассе вы можете реализовать drawRect.

2 голосов
/ 04 января 2012

Технически существует средство для того, чтобы один объект стал делегатом чертежа другого через маршрут view.layer.delegate. Можно создать делегат для реализации

  • (void) drawLayer: (CALayer *) слой inContext: (CGContextRef) ctx

Это дает вам возможность повторно использовать инструкции для рисования, если в этом возникнет необходимость. Но это может быть утомительно читать и понимать для другого программиста. Большинство избежало бы этого, если это не устраняет дублирование кода.

0 голосов
/ 25 мая 2009

Вы никогда не должны рисовать в другом виде, даже в подпредставлении. Подвид должен рисовать сам, и у него есть доступ к своему собственному графическому контексту. Вы не можете получить доступ к контексту другого представления; они обрабатываются платформой и настраиваются перед вызовом -drawRect: для соответствующего представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...