iOS开发中十六进制颜色与RGB的相互转化

在iOS开发中,我们常常会在界面色调搭配的时候选色比较麻烦,因为系统大多提供给我们的是一些基本颜色,还有就是取色器强行配色。但实际我们所需要的更多色调都有具体的十六进制表示,接下来我们就看看十六进制颜色与我们经常使用的RGB值之间的转换

1.由于文中经常用到,所以我直接在一个类中封装一个HEX转化方法,以便后面方便使用:

.h文件:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface HexColor : NSObject

/*.h中进行申明方法*/

+ (UIColor *)colorWithHexString:(NSString *)color;

@end

.m文件:

#import "HexColor.h"
@implementation HexColor
#pragma mark -- 16进制Color转换

+ (UIColor *)colorWithHexString:(NSString *)color

{
    NSString *cString = [[colorstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]uppercaseString];

    if ([cStringlength] < 6) {
        return [UIColorclearColor];
    }

    if ([cStringhasPrefix:@"0X"])

        cString = [cString substringFromIndex:2];

    if ([cStringhasPrefix:@"#"])

        cString = [cString substringFromIndex:1];

    if ([cStringlength] != 6)

        return [UIColorclearColor];

    NSRange range;
    range.location =0;
    range.length =2;
    NSString *rString = [cStringsubstringWithRange:range];
    range.location =2;
    NSString *gString = [cStringsubstringWithRange:range];
    range.location =4;
    NSString *bString = [cStringsubstringWithRange:range];
    unsignedint r, g, b;

    [[NSScannerscannerWithString:rString] scanHexInt:&r];
    [[NSScannerscannerWithString:gString] scanHexInt:&g];
    [[NSScannerscannerWithString:bString] scanHexInt:&b];

    return [UIColorcolorWithRed:((float) r /255.0f) green:((float) g /255.0f) blue:((float) b /255.0f) alpha:1.0f];
}
@end

2.例如在某个颜色设置中调用:

 self.view.backgroundColor = [HexColorcolorWithHexString:@"a1f1f2"];

PS:这样就可以方便我们随意搭配了。

猜你喜欢

转载自blog.csdn.net/kenn_lee/article/details/52612087
今日推荐