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

渐变色:

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

}

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

推荐阅读更多精彩内容