обработка нескольких чертежей CALayer в представлении - PullRequest
0 голосов
/ 20 марта 2012

Я хочу реализовать вид с двумя слоями.Затем я хочу сделать некоторые рисунки на этих слоях отдельно при нажатии некоторых кнопок.

Я реализовал метод делегата:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context

, но проблема в том, что этот делегат запускается только с [myviewclass setNeedsDisplay] метод (не [mylayer setNeedsDisplay]), а затем drawLayer всегда вызывается для корневого слоя представления.

Я хочу, чтобы его вызывали для mylayer с точным context, чтобы я мог рисовать наконкретный слой, используя его контекст.

Пожалуйста, помогите, как этого добиться.

1 Ответ

3 голосов
/ 20 марта 2012

Вы должны установить делегат слоя и реализовать в нем метод делегата drawLayer:inContext:.В противном случае уровень не может определить, в каком объекте он должен вызывать этот метод.

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

Вы можете использовать контроллер вида, например, как делегат ваших слоев.Сначала реализуйте метод drawLayer:inContext: в контроллере вида.Затем установите контроллер представления в качестве делегата ваших слоев.

- (void)viewDidLoad
{
    [super viewDidLoad];
    // ...
    self.view.layer1.delegate = self;
    self.view.layer2.delegate = self;
}

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    if (layer == self.view.layer1) {
        // ...
    } else if (layer == self.view.layer2) {
        // ..
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...