3

これは、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);

}

同じ問題ですが、ビューが黒くなり、ストーリーボードに追加された要素が表示されません

4

2 に答える 2

5

1 つの問題 (おそらく唯一の問題) は、すべてゼロのコンポーネントで色を作成していることです。と言う208/255と、コンパイラは整数を使用して除算を実行し、剰余を削除するため、208/2550 になります。浮動小数点で除算する必要があります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];
}
于 2012-09-30T04:31:06.560 に答える
1

レイヤーをそれ自体のサブレイヤーとして追加しています。[self layer]ビューの既存のレイヤーを返します。別のレイヤーを作成する場合は、手動で行う必要があります。ビュー システムには、循環参照が制御不能にならないようにする何かがおそらくあります。

[super viewDidLoad]参考までに、何かをする前に電話をかける習慣をつけてください。を作成する簡単な方法は、CGColorを作成してUIColorそのCGColorプロパティを取得することです。

于 2012-09-30T03:06:29.683 に答える