【发布时间】:2011-01-21 13:51:00
【问题描述】:
我希望我的 UIView 从 100% 不透明度变为 0% 不透明度。关于如何做到这一点的任何想法?
【问题讨论】:
-
它的背景是动态渲染的,还是静态背景图片?
-
在一些文字上:skitch.com/sidwynkoh/rkxar/…
标签: iphone objective-c uiview opacity
我希望我的 UIView 从 100% 不透明度变为 0% 不透明度。关于如何做到这一点的任何想法?
【问题讨论】:
标签: iphone objective-c uiview opacity
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);
}
【讨论】:
如果视图及其标签位于某个静态背景图像或颜色上,一个快速而肮脏的技巧是创建该图像或颜色的渐变 PNG 并将它们放置在视图上。
否则,看看您是否可以根据自己的观点调整this CALayer gradient mask solution。
【讨论】: