0

次のコードがあります。

-(void)drawRect:(CGRect)rect
{

    // gradient background
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = rect;
    gradient.colors = [NSArray arrayWithObjects:(id) backgroundGradientTop.CGColor, (id) backgroundGradientBottom.CGColor, nil];
    gradient.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.7], nil];

    [self.layer insertSublayer:gradient atIndex:0];



    // line on top
    [[UIColor redColor] set];

    CGContextRef currentContext = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(currentContext, 5.0f);

    CGContextMoveToPoint(currentContext, 0, 10.0f);

    CGContextAddLineToPoint(currentContext, rect.size.width, 10.0f);

    CGContextStrokePath(currentContext);


}

グラデーションの上に描画しようとしている線は表示されません。グラデーションレイヤーをコメントアウトすると、そこにあります。グラデーションの背景と線 (または数本の線) の両方を上に描画する方法はありますか? キャレイヤーとCGを混ぜてはいけないのかな?

4

1 に答える 1

0

グラデーションの上に描画しようとしている線は表示されません。グラデーションレイヤーをコメントアウトすると、そこにあります。

これは、サブレイヤーが親レイヤーの上に表示されるためです。グラデーションは明らかに不透明で、ビューと同じサイズなので、ビューを覆います。

この方法でCAとCGの描画を混在させることはできません。を使用してグラデーションを描画すると、より効果的に機能しますCGContextDrawLinearGradient

于 2012-06-13T04:15:05.163 に答える