今天遇到一个为导航栏设置渐变背景色的需求,直接设置肯定是不行的了。所以采取曲线救国的政策。
思路:1. 先创建一个渐变背景色的UIView
2.再将UIView转成UIImage
3. 最后将转成的UIImage设置成UINavigationBar的背景图片即可。
思路明确了,剩下的就是码代码了。
关键代码如下,在UIView的category里增加两个方法:
-
(void)addGradualLayerWithColors:(NSArray *)colors {
if (colors == nil && colors.count == 0) {
return;
}CAGradientLayer *_gradientLayer = [CAGradientLayer layer];
_gradientLayer.startPoint = CGPointMake(1, 0);//第一个颜色开始渐变的位置
_gradientLayer.endPoint = CGPointMake(0, 1);//最后一个颜色结束的位置
_gradientLayer.frame = self.bounds;//设置渐变图层的大小
_gradientLayer.colors = colors;
[self.layer insertSublayer:_gradientLayer atIndex:0];
} -
(UIImage)convertToImage{
CGSize s = self.bounds.size;
// 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了
UIGraphicsBeginImageContextWithOptions(s, NO, [UIScreen mainScreen].scale);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImageimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
完美解决。
网友评论