Простой пример CALayers в NSView - PullRequest
3 голосов
/ 17 июля 2011

Я пытаюсь добавить несколько CALayers в NSView, но мое представление остается пустым, когда отображается:

Вот мой код:

- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {

    self.layer = [CALayer layer];
    self.wantsLayer = YES;
    CALayer *newLayer = [CALayer layer];
    NSImage *image = [NSImage imageNamed:@"page.png"];
    newLayer.backgroundColor = [NSColor redColor].CGColor;
    newLayer.contents = (id)[image CGImageForProposedRect:NULL context:NULL hints:nil];
    newLayer.frame = NSMakeRect(100,100,100,100);//NSMakeRect(0,0,image.size.width,image.size.height);
    newLayer.position  = CGPointMake(20,20);
    [self.layer addSublayer:newLayer];

}
return self;

}

У меня естьЛюбая идея (или пример кода) для выполнения этой задачи?

Спасибо и всего наилучшего,

1 Ответ

10 голосов
/ 17 июля 2011

Код для настройки слоя должен быть в методе awakeFromNib, а не в функции initWithFrame.

Объяснение почему:)

В файле пера ваше представление помечено как не нуждающееся в слое, поэтому поток

  • вы устанавливаете свои слои в initWithFrame: метод
  • свойства nib-файла настроены на стирание ваших слоев.

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

...