typedef NS_ENUM(NSInteger, GradientDirection) {
GradientDirectionTopToBottom = 0, // 从上往下 渐变
GradientDirectionLeftToRight, // 从左往右
GradientDirectionBottomToTop, // 从下往上
GradientDirectionRightToLeft // 从右往左
};
/*
* @param bounds 图片的大小
* @param colors 渐变颜色组
* @param gradientType 渐变方向
*
* @return 图片
*/
-(UIImage*)gradientImageWithBounds:(CGRect)bounds andColors:(NSArray*)colors andGradientType:(GradientDirection)gradientType{
NSMutableArray *ar = [NSMutableArray array];
for(UIColor *c in colors) {
[ar addObject:(id)c.CGColor];
}
UIGraphicsBeginImageContextWithOptions(bounds.size, YES, 1);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar, NULL);
CGPoint startPt = CGPointMake(0.0, 0.0);
CGPoint endPt = CGPointMake(0.0, 0.0);
switch (gradientType) {
case GradientDirectionTopToBottom:
startPt= CGPointMake(0.0, 0.0);
endPt= CGPointMake(0.0, bounds.size.height);
break;
case GradientDirectionLeftToRight:
startPt = CGPointMake(0.0, 0.0);
endPt = CGPointMake(bounds.size.width, 0.0);
break;
case GradientDirectionBottomToTop:
startPt = CGPointMake(0.0, bounds.size.height);
endPt = CGPointMake(0.0, 0.0);
break;
case GradientDirectionRightToLeft:
startPt = CGPointMake(bounds.size.width, 0.0);
endPt = CGPointMake(0, 0.0);
break;
}
CGContextDrawLinearGradient(context, gradient, startPt, endPt, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
CGGradientRelease(gradient);
CGContextRestoreGState(context);
CGColorSpaceRelease(colorSpace);
UIGraphicsEndImageContext();
return image;
}
//渐变颜色
UIImageView* baseImg = [[UIImageView alloc] init];
//[baseImg setImage:[UIImage imageNamed:@"Mask"]];
[self.contentView insertSubview:baseImg atIndex:0];
[baseImg mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.contentView);
}];
[self.contentView layoutIfNeeded];
CGFloat height = baseImg.frame.size.height;
//设置view 背景渐变颜色
UIImage *backImage = [self gradientImageWithBounds:CGRectMake(0, 0, SCREEN_WIDTH, height) andColors:@[UIColorFromRGB(0xC49C5A), UIColorFromRGB(0xDFC289)] andGradientType:GradientDirectionLeftToRight];
UIColor *bgColor = [UIColor colorWithPatternImage:backImage];
[baseImg setBackgroundColor:bgColor];