iOS通过Category实现UIView渐变的背景颜色
2018-07-12 本文已影响0人
德坤柳
项目中有很多View和Button需要设置渐变的背景颜色,所以写了一个Category来方便调用。
- (void)setGradientBackgroundColor
{
//创建一个渐变的图层
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor blueColor].CGColor];
gradientLayer.locations = @[@0, @1.0];
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1.0, 0);
gradientLayer.frame = self.bounds;
gradientLayer.name = @"gradientLayer";
//生成一个image
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0.0);
[gradientLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//设置背景颜色
self.backgroundColor = [UIColor colorWithPatternImage:img];
}
调用方式,import这个category,在需要设置背景颜色的时候调用就可以了
#import "UIView+Gradient.h"
@interface ViewController ()
@property (nonatomic, strong)UIView *tempView;
@property (nonatomic, strong)UIView *childView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_tempView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
[self.view addSubview:_tempView];
_childView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];
_childView.backgroundColor = [UIColor whiteColor];
[_tempView addSubview:_childView];
[_tempView setGradientBackgroundColor];
}
@end
效果图
渐变效果图.png
参考链接
ios实现颜色渐变的几种方法