如何在UIView上应用不透明度渐变?

时间:2011-01-21 13:51:00

标签: iphone objective-c uiview opacity

我希望我的UIView从100%不透明度淡化为0%不透明度。有关如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:3)

Ray Wenderlich有一个很好的教程,可以设置对象的渐变。我的建议是修改以下代码以满足您的需求。

//Ray's code:
void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, 
    CGColorRef  endColor) {
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGFloat locations[] = { 0.0, 1.0 };

    NSArray *colors = [NSArray arrayWithObjects:(id)startColor, (id)endColor, nil];

    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, 
        (CFArrayRef) colors, locations);

    CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
    CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

    CGContextSaveGState(context);
    CGContextAddRect(context, rect);
    CGContextClip(context);
    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
    CGContextRestoreGState(context);

    CGGradientRelease(gradient);
    CGColorSpaceRelease(colorSpace);
}

答案 1 :(得分:1)

如果视图及其标签位于某些静态背景图像或颜色上,则快速而肮脏的技巧是创建该图像或颜色的渐变PNG并将其放置在视图上。

否则,看看您是否可以根据视图调整this CALayer gradient mask solution