Objective c 不显示

Objective c 不显示,objective-c,ios,core-animation,Objective C,Ios,Core Animation,这是我第一次尝试使用CALayer。构建是成功的,并且没有报告错误,所以我认为我肯定做了一些明显错误的事情。但该层根本不显示 - (void)viewDidLoad { // Get Reliant Magenta in amazingly verbose manner CGColorSpaceRef rgbaColorSpace = CGColorSpaceCreateDeviceRGB(); CGFloat reliantMagentaValues[4]

这是我第一次尝试使用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);

}
我取而代之的是一整页的洋红,取而代之的是灰色的空视图。我怎么把这么简单的事情搞砸了


更新

- (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);

}

同样的问题,但是视图现在是黑色的,并且不显示在情节提要中添加的元素。您正在添加一个层作为自身的子层<代码>[self layer]返回视图的现有层。如果要创建单独的图层,必须手动创建。视图系统中可能有某种东西可以防止循环引用的迭代失控

作为参考,您应该养成在做任何其他事情之前调用
[super viewDidLoad]
的习惯。创建
CGColor
更简单的方法是创建
UIColor
并获取其
CGColor
属性

一个问题(可能是唯一的问题)是您正在使用所有零组件创建颜色。当您说
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];
}

如果在super viewDidLoad之前添加Sublayer,会发生什么情况?那么我将如何以不同的方式编写它?我可以设置视图根层的属性吗?实际上,我正在尝试手动添加我自己的子层。我假设您已经导入并链接了QuartzCore.framework。罗布说了什么,是的,我说了。正如我所说的,构建成功了,正如你所说的,我对强类型语言是新手。再次感谢,你关于浮动的观点非常有效。