[英]CALayer not displaying
所以这是我第一次尝试使用CALayer。 构建是成功的,没有报告错误,所以我认为我必须做一些明显错误的事情。 但该层根本不显示。
- (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);
}
同样的问题,但视图现在是黑色的,不显示故事板中添加的元素
一个问题(可能是唯一的问题)是您使用所有零组件创建颜色。 当您说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]
返回视图的现有图层。 如果要创建单独的图层,则必须手动执行。 视图系统中可能存在一些东西,它使循环引用不再失控。
作为参考,您应该养成在执行任何其他操作之前调用[super viewDidLoad]
的习惯。 创建CGColor
一种更简单的方法是创建UIColor
并获取其CGColor
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.