美文网首页
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