美文网首页
iOS开发 如何实现渐变色背景

iOS开发 如何实现渐变色背景

作者: CarrieQ | 来源:发表于2016-11-29 11:43 被阅读1615次

首先把渐变色实现之后,做成一种渐变色图片

1.先在UIImage里面写一个类扩展,具体代码如下
// .h文件

#import <UIKit/UIKit.h>

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

// .m文件

#import "UIImage+GradientColor.h"

@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

2.写好类扩展之后,在外部这么实现即可。具体代码如下
// 设置控件背景色(用到了UIImage+GradientColor.h这个类扩展)

UIColor *topColor = [UIColor redColor];

UIColor *bottomColor = [UIColor blueColor];

UIImage *bgImg = [UIImage gradientColorImageFromColors:@[topColor, bottomColor] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(你控件需要的大小)];

[你的控件  setBackgroundColor:[UIColor colorWithPatternImage:bgImg]];

相关文章

网友评论

      本文标题:iOS开发 如何实现渐变色背景

      本文链接:https://www.haomeiwen.com/subject/pumapttx.html