美文网首页
渐变色图片

渐变色图片

作者: 大鹏你我他 | 来源:发表于2017-09-20 15:50 被阅读0次

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

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

    // .h文件

    #import

    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]];

    作者:琦灬哥

    链接:http://www.jianshu.com/p/a98b93246c54

    來源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:渐变色图片

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