可能重复:
在iPhone应用程序中手动绘制渐变?
我的应用程序需要在a UIView或者背景中显示文本,UILabel但是背景必须是渐变而不是true UIColor.使用图形程序创建所需的外观并不好,因为文本可能会根据从服务器返回的数据而有所不同.
有谁知道解决这个问题的最快方法?非常感谢您的想法.
我有一个视图,它有一个CALayer.当我创建一个CAGradientLayer并将其应用为该视图的CALayer的掩码时,没有任何反应.为什么?
在-initWithFrame:视图中我这样做:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
//[self.layer insertSublayer:gradient atIndex:0];
self.layer.mask = gradient;
Run Code Online (Sandbox Code Playgroud)
如果我更换
self.layer.mask = gradient;
Run Code Online (Sandbox Code Playgroud)
同
[self.layer insertSublayer:gradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)
然后我看到了渐变.它是从黑色到白色.
有什么诀窍?
我正在CAGradientLayer为我UIView的每一个背景做一个,但我有一个小问题.渐变似乎不够平滑.颜色之间的过渡将呈现.你可以在这张照片中看到它.

这就是我在UIView的初始化程序中实现此渐变的方法.
CAGradientLayer *layer = [CAGradientLayer layer];
layer.colors = [NSArray arrayWithObjects:
(id)[[UIColor darkKinepolisColor] CGColor],
(id)[[UIColor lightKinepolisColor] CGColor],
(id)[[UIColor lightKinepolisColor] CGColor],
(id)[[UIColor darkKinepolisColor] CGColor],
nil];
layer.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0],
[NSNumber numberWithFloat:0.4],
[NSNumber numberWithFloat:0.6],
[NSNumber numberWithFloat:1],
nil];
layer.startPoint = CGPointMake(0, 0);
layer.frame = self.layer.bounds;
layer.endPoint = CGPointMake(1, 1);
layer.contentsGravity = kCAGravityResize;
[self.layer addSublayer:layer];
Run Code Online (Sandbox Code Playgroud)
优秀的开发人员可以帮我解决这个问题吗?谢谢!