设置按钮渐变背景色
[self.btnSubmit setBackgroundImage:[JLUtility currentGradientColorImageWithSize:CGSizeMake(kJLScreenWidth-40, 48)] forState:UIControlStateNormal];
self.btnSubmit.layer.cornerRadius = 24;
self.btnSubmit.layer.masksToBounds = YES;
定义方向
typedef NS_ENUM(NSUInteger, GradientType) {
GradientTypeTopToBottom = 0,//从上到小
GradientTypeLeftToRight = 1,//从左到右
GradientTypeUpleftToLowright = 2,//左上到右下
GradientTypeUprightToLowleft = 3,//右上到左下
};
@interface UIImage (GradientColor)
+ (UIImage *)gradientColorImageFromColors:(NSArray*)colors gradientType:(GradientType)gradientType imgSize:(CGSize)imgSize;
@end
@implementation UIImage (GradientColor)
+ (UIImage *)gradientColorImageFromColors:(NSArray*)colors gradientType:(GradientType)gradientType imgSize:(CGSize)imgSize
{
NSMutableArray *ar = [NSMutableArray array];
for(UIColor *c in colors) {
[ar addObject:(id)c.CGColor];
}
UIGraphicsBeginImageContextWithOptions(imgSize, YES, 1);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar, NULL);
CGPoint start;
CGPoint end;
switch (gradientType) {
case GradientTypeTopToBottom:
start = CGPointMake(0.0, 0.0);
end = CGPointMake(0.0, imgSize.height);
break;
case GradientTypeLeftToRight:
start = CGPointMake(0.0, 0.0);
end = CGPointMake(imgSize.width, 0.0);
break;
case GradientTypeUpleftToLowright:
start = CGPointMake(0.0, 0.0);
end = CGPointMake(imgSize.width, imgSize.height);
break;
case GradientTypeUprightToLowleft:
start = CGPointMake(imgSize.width, 0.0);
end = CGPointMake(0.0, imgSize.height);
break;
default:
break;
}
CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
CGGradientRelease(gradient);
CGContextRestoreGState(context);
CGColorSpaceRelease(colorSpace);
UIGraphicsEndImageContext();
return image;
}
@end
封装使用类方法
///渐变色 左边深右边浅
+(UIImage *)currentGradientColorImageWithSize:(CGSize)size{
return [UIImage gradientColorImageFromColors:@[LAColor(255, 74, 61),LAColor(255, 62, 169)] gradientType:GradientTypeLeftToRight imgSize:size];
}
///渐变色 左边浅右边深
+(UIImage *)currentGradientDeepColorImageWithSize:(CGSize)size{
return [UIImage gradientColorImageFromColors:@[LAColor(255, 62, 169),LAColor(255, 74, 61)] gradientType:GradientTypeLeftToRight imgSize:size];
}
///纯色
+(UIImage *)currentColorImageWithSize:(CGSize)size{
return [UIImage gradientColorImageFromColors:@[kJLUIColorFromHex(0xFF3434),kJLUIColorFromHex(0xFF3434)] gradientType:GradientTypeLeftToRight imgSize:size];
}
///黑色 0元试用渐变
+(UIImage *)currentGradientblackColorImageWithSize:(CGSize)size{
return [UIImage gradientColorImageFromColors:@[kJLUIColorFromHex(0x666666),kJLUIColorFromHex(0x333333)] gradientType:GradientTypeLeftToRight imgSize:size];
}