NSView中CALayers的简单示例

时间:2011-07-17 10:16:44

标签: objective-c cocoa core-animation calayer

我正在尝试将几个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 个答案:

答案 0 :(得分:10)

设置图层的代码需要在awakeFromNib方法中,而不是在initWithFrame函数中。

解释原因:)

在nib文件中,您的视图被标记为不需要图层,因此流程为

  • 您在initWithFrame:method
  • 中设置图层
  • 设置了nib文件属性,擦除了图层。

您也可以按原样保留代码,并告诉界面构建器您的自定义视图需要一个图层。