iOS开发-轻松实现十六进制颜色(#开头)转RGB颜色_Swift/OC

我们在做iOS开发,给一个 view添背景颜色时,一般都是用到RGB颜色,比如下面这样的

    self.view.backgroundColor=[UIColor colorWithRed:0.578 green:0.720 blue:1.000 alpha:1.000];

然后美工给我们作图的时候往往给我们的色值都是十六进制的颜色, 比如这样的


十六进制的色值

如果老大不管你的话,可以直接用滴管直接吸取这个颜色,但是一般情况下都会有误差,所以笔者不建议这么用,这需要将#6cabdf转换成UIColor供我们使用,笔者写了一个UIColor拓展的类方法直接调用,方便简洁,调用如下。
首先导入

//建议写到.pch文件中 方便全项目调用
#import "UIColor+ColorChange.h"

调用的时候直接传入#6cabdf即可

    self.view.backgroundColor=[UIColor colorWithHexString:@"#6cabdf"];

运行效果图:


模拟器部分截图

这样颜色基本上就跟美工给的颜色一样啦。

swift 方法
```swift
func UIColorFromRGB(rgbValue: UInt) -> UIColor {
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
```

oc具体实现方法如下,
UIColor+ColorChange.h

#import <UIKit/UIKit.h>

@interface UIColor (ColorChange)

// 颜色转换:iOS中(以#开头)十六进制的颜色转换为UIColor(RGB)
+ (UIColor *) colorWithHexString: (NSString *)color;

@end

UIColor+ColorChange.m

#import "UIColor+ColorChange.h"

@implementation UIColor (ColorChange)

+ (UIColor *) colorWithHexString: (NSString *)color
{
    NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];

    // String should be 6 or 8 characters
    if ([cString length] < 6) {
        return [UIColor clearColor];
    }
    // 判断前缀
    if ([cString hasPrefix:@"0X"])
        cString = [cString substringFromIndex:2];
    if ([cString hasPrefix:@"#"])
        cString = [cString substringFromIndex:1];
    if ([cString length] != 6)
        return [UIColor clearColor];
    // 从六位数值中找到RGB对应的位数并转换
    NSRange range;
    range.location = 0;
    range.length = 2;
    //R、G、B
    NSString *rString = [cString substringWithRange:range];
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    // Scan values
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];

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

基本实现方法就是这样啦,有需要的或者感兴趣的朋友可以复制直接带走,如果使用过程中遇到问题,可以再联系笔者,笔者再尽力修改修改,如果觉得笔者写的还行,可以关注一下笔者,笔者不定期分享一些好玩的实用的类方法和demo给大家。

笔者的其他文章:
iOS开发-轻松学会封装自定义视图view(自定义弹框封装详解)
http://www.jianshu.com/p/de2ecfd770c2

iOS开发-两句代码快速实现无限轮播图(基于ScrollView封装)
http://www.jianshu.com/p/d240bd977689

iOS开发-一句代码调用实现网络的监测功能(基于AFNetworkReachabilityManager的封装)
http://www.jianshu.com/p/b901ad0c1d81

如果有不足或者错误的地方还望各位读者批评指正,可以评论留言,笔者收到后第一时间回复。
QQ/微信:790057066 。
简书号:iOS_凯:http://www.jianshu.com/users/86b0ddc92021/latest_articles
GitHub个人主页:https://github.com/18811314750
欢迎各位前来指教,star,感谢各位的阅读。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值