CALayer不显示

所以这是我第一次尝试使用CALayer。 build设是成功的,没有报告的错误,所以我认为我一定在做一些明显错误的事情。 但是图层根本不显示。

- (void)viewDidLoad { // Get Reliant Magenta in amazingly verbose manner CGColorSpaceRef rgbaColorSpace = CGColorSpaceCreateDeviceRGB(); CGFloat reliantMagentaValues[4] = {(208/255),(27/255),(124/255),0.3f}; CGColorRef reliantMagenta = CGColorCreate(rgbaColorSpace, reliantMagentaValues); CALayer *reliantCanvasLayer = [CALayer layer]; reliantCanvasLayer.backgroundColor = reliantMagenta; reliantCanvasLayer.frame = CGRectMake(0, 0, 640, 960); [super viewDidLoad]; [[[self view] layer] addSublayer:reliantCanvasLayer]; CGColorRelease(reliantMagenta); } 

而不是一整页的洋红色,我回到灰色的空观。 我怎么搞乱这个简单的东西?


UPDATE

 - (void)viewDidLoad { [super viewDidLoad]; // Get Reliant Magenta in amazingly verbose manner CGColorSpaceRef rgbaColorSpace = CGColorSpaceCreateDeviceRGB(); CGFloat reliantMagentaValues[4] = {(208/255),(27/255),(124/255),0.3f}; CGColorRef reliantMagenta = CGColorCreate(rgbaColorSpace, reliantMagentaValues); [[self view] layer].backgroundColor = reliantMagenta; CGColorRelease(reliantMagenta); } 

同样的问题,但现在看来是黑色的,而不是显示故事板中添加的元素

一个问题(可能是唯一的问题)是你正在创build你所有的零组件的颜色。 当你说208/255 ,编译器使用整数执行除法,并且208/255其余部分,所以208/255为0.需要用浮点数208.0f / 255.0f

使用UIColor代替自己设置CGColorSpaceCGColor也容易得多。 尝试这个:

 - (void)viewDidLoad { [super viewDidLoad]; UIColor *reliantMagenta = [UIColor colorWithRed:208.0f / 255.0f green:27.0f / 255.0f blue:124.0f / 255.0f alpha:0.3f]; CALayer *magentaLayer = [CALayer layer]; magentaLayer.frame = CGRectMake(0, 0, 640, 960); magentaLayer.backgroundColor = reliantMagenta.CGColor; [self.view.layer addSublayer:magentaLayer]; } 

您将添加一个图层作为其自身的子图层。 [self layer]返回视图的现有图层。 如果你想创build一个单独的图层,你必须手动完成。 视图系统中可能存在一些使循环引用无法控制的问题。

作为一个参考点,在做任何其他事情之前,你应该习惯于调用[super viewDidLoad] 。 创buildCGColor的更简单的方法是创build一个UIColor并获取它的CGColor属性。