15

ビューに を追加しCAGradientLayerています。ビューのサイズが自動変更された場合 (回転後など)、グラデーション レイヤーのサイズは変更されません。ビューと同じようにグラデーションを自動サイズ変更するように設定できますか? ビューで自動レイアウト制約を使用していることにも注意してください。

これが私がやっていることです:

    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = CGRectMake(0.0, 0.0, frame.size.width, frame.size.height);
    gradientLayer.colors = [NSArray arrayWithObjects:
                       (id)[[UIColor colorWithRed:255.0/255.0f green:255.0/255.0f blue:255.0/255.0f alpha:1.0f] CGColor],
                       (id)[[UIColor colorWithRed:233.0/255.0f green:233.0/255.0f blue:233.0/255.0f alpha:1.0f] CGColor], nil];

    [self.layer insertSublayer:gradientLayer atIndex:0];
4

2 に答える 2

2

setFrame:ビューのメソッドをオーバーライドして、レイヤーの境界のサイズを手動で変更します。

-(void)setFrame:(CGRect)frame
{
    [super setFrame:frame];
    _gradientLayer.bounds = CGRectMake(0, 0, CGRectGetWidth(frame), CGRectGetHeight(frame));
}
于 2013-03-22T23:34:12.573 に答える