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

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

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]];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容