想要在窗口内显示CALayer

时间:2009-12-12 05:12:38

标签: cocoa core-animation

我正在尝试使用黑色背景显示CALayer。我已将AppDelegate作为代理附加到文件的所有者。控制台正确报告“从nib唤醒...”日志语句。然而,我只看到一个空白的灰色窗口(尺寸为335x390),中间没有画出黑框。我错过了什么概念?

提前感谢您的帮助,

查尔斯

#import "AppDelegate.h"
#import <QuartzCore/QuartzCore.h>
@implementation AppDelegate

-(void)awakeFromNib;
{
  NSLog(@"awaking from nib...");
  [[window contentView] setWantsLayer:YES];

  layer = [CALayer layer];
  [layer setBounds:CGRectMake(0.0,0.0,100.0,100.0)];

   // center the animation layer
   [layer setPosition:CGPointMake([[window contentView] frame].size.width/2, [[window contentView]frame].size.height/2)];
   CGColorRef color = CGColorCreateGenericRGB(0., 0., 0., 1);
   [layer setBackgroundColor:color];
   CFRelease(color);

   [layer setBorderWidth:5.0f];

   [[[window contentView] layer] addSublayer:layer];      
}
@end

1 个答案:

答案 0 :(得分:1)

自定义图层的构造代码看起来正确,但RGBA为(1,1,1,1)的颜色为白色而非黑色。

我会验证您window属性的插座是否正确连接(确保它是非零的),并且contentView是非零的。如果这些看起来不错,您可以尝试通过执行类似以下的操作为contentView提供自己的自定义图层:

[[window contentView] setLayer:[CALayer layer]];
[[window contentView] setWantsLayer:YES];