我想创建一个UIView,其中包含逐渐增加的不透明度值。也就是说,UIView的底部将以0.0作为其alpha值开始,它应该以UIView顶部的1.0结尾。是否有可能提出这样的观点?或者我应该将该视图分开并给它们各种alpha值?
先谢谢
答案 0 :(得分:18)
为了将来参考,这种效果的术语是gradient
。
您可以使用后面的渐变图片制作视图:
UIImageView
后面创建UIView
UIView
的背景颜色设置为清除。UIImageView
的背景图像设置为您创建的渐变PNG。渐变PNG可以是1px宽,也可以是64px高(或更高,取决于您希望渐变看起来的平滑程度)。在绘画程序中制作它(GIMP是一个体面的程序)。
纯粹在代码中执行此操作的方法是使用CAGradientLayer
:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.view.bounds;
gradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithWhite: 0.0 alpha:0.0] CGColor],
(id)[[UIColor colorWithWhite: 0.0 alpha:1.0] CGColor], nil];
gradient.startPoint = CGPointMake(0.5, 0.0); // default; bottom of the view
gradient.endPoint = CGPointMake(0.5, 1.0); // default; top of the view
[self.view.layer insertSublayer:gradient atIndex:0];