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

Posted

技术标签:

【中文标题】如何在 UIView 上应用不透明度渐变?【英文标题】:How do I apply an opacity gradient on a UIView? 【发布时间】:2011-01-21 13:51:00 【问题描述】:

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

【问题讨论】:

它的背景是动态渲染的,还是静态背景图片? 在一些文字上:skitch.com/sidwynkoh/rkxar/… 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

否则,看看您是否可以根据自己的观点调整this CALayer gradient mask solution。

【讨论】:

以上是关于如何在 UIView 上应用不透明度渐变?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIView 上绘制渐变封面

UIView 上的渐变蒙版

在 UIView 上应用渐变不起作用

如何在 UIView 上设置渐变边框?

AE 里 如何给中间白色矩形添加一个从白色到透明的渐变效果

如何使用 SVG 滤镜创建透明渐变蒙版