繁体   English   中英

CAGradientLayer涵盖了drawRect中绘制的所有内容

[英]CAGradientLayer covers everything drawn in drawRect

我有以下代码:

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


}

我尝试在渐变顶部绘制的线从未显示。 如果我注释掉渐变层,它在那里。 是否有办法在顶部绘制渐变背景和一条线(或几条线)? 也许我不应该混合calayer和CG?

我尝试在渐变顶部绘制的线从未显示。 如果我注释掉渐变层,它在那里。

这是因为子层出现在其父层的顶部。 渐变显然是不透明的,并且与您的视图大小相同,因此它可以遮盖视图。

您不能以这种方式混合使用CA和CG绘图。 如果使用CGContextDrawLinearGradient绘制渐变,效果会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM