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
代替自己设置CGColorSpace
和CGColor
也容易得多。 尝试这个:
- (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
属性。