美文网首页
iOS 渐变色 获取RGBA 十六进制转颜色

iOS 渐变色 获取RGBA 十六进制转颜色

作者: 前行的骆驼 | 来源:发表于2020-03-18 10:40 被阅读0次

    渐变色:

    typedef NS_ENUM(NSInteger, UIColorGradientDirection) {

        ///水平方向

        UIColorGradientDirectionHorizontal =1,

        ///垂直方向

        UIColorGradientDirectionVertical =2,

        ///对角线方向(左上-右下)

        UIColorGradientDirectionlLeftUpToRightDown =0,

        ///对角线方向(左下-右上)

        UIColorGradientDirectionlLeftDownToRightUp =3,

    };

    + (UIColor*)gradientColorFromColors:(NSArray*)colors imgSize:(CGSize)imgSize gradientDirection:(UIColorGradientDirection)gradientDirection{    

        NSMutableArray *ar = [NSMutableArray array];

        for(UIColor*c in colors) {

            [ar addObject:(id)c.CGColor];

        }

        UIGraphicsBeginImageContextWithOptions(imgSize, YES, 1);

        CGContextRef context = UIGraphicsGetCurrentContext();

        CGContextSaveGState(context);

        CGContextClearRect(context,CGRectMake(0,0, imgSize.width, imgSize.height)); 

        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

        CGGradientRef gradient =CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar,NULL);

        CGPoint start;

        CGPoint end;

        switch(gradientDirection) {

            case UIColorGradientDirectionHorizontal:

                start =CGPointMake(0.0,0.0);

                end =CGPointMake(imgSize.width,0);

                break;

            case UIColorGradientDirectionVertical:

                start =CGPointMake(0.0,0.0);

                end =CGPointMake(0, imgSize.height);

                break;

            case UIColorGradientDirectionlLeftUpToRightDown:

                start =CGPointMake(0.0,0.0);

                end =CGPointMake(imgSize.width, imgSize.height);

                break;

            case UIColorGradientDirectionlLeftDownToRightUp:

                start =CGPointMake(0.0, imgSize.height);

                end =CGPointMake(imgSize.width,0.0);

                break;

            default:

                break;

        }

        CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);

        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

        CGGradientRelease(gradient);

        CGContextRestoreGState(context);

        CGColorSpaceRelease(colorSpace);

        UIGraphicsEndImageContext();

        return [UIColor colorWithPatternImage:image];

    }

    获取RGBA

    - (void)getRGB:(UIColor *)color{

        CGFloat red =0.0;

        CGFloat green =0.0;

        CGFloat blue =0.0;

        CGFloat alpha =0.0;

        [color getRed:&red green:&green blue:&blue alpha:&alpha];

        NSLog(@"red:%f,green:%f,blue:%f,alpha:%f",red,green,blue,alpha);

    }

    十六进制转颜色

    + (UIColor*)colorWithHex:(long)hex{

        return  [UIColorcolorWithRed:(((hex &0xFF0000) >>16))/255.0 green:(((hex &0xFF00) >>8))/255.0 blue:((hex &0xFF))/255.0alpha:1.0];

    }

    + (UIColor*)colorWithHex:(long)hexalpha:(float)alpha{

        return  [UIColorcolorWithRed:(((hex &0xFF0000) >>16))/255.0 green:(((hex &0xFF00) >>8))/255.0 blue:((hex &0xFF))/255.0 alpha:alpha];

    }

    相关文章

      网友评论

          本文标题:iOS 渐变色 获取RGBA 十六进制转颜色

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