1、实现思路

先把16进制转换为RGB然后再书写,为了提高开发速度,本文使用UIColor的分类,直接使用16进制颜色,例:self.view.backgroundColor = [UIColor hexColor:@"#333333"];

首先传入一个string类型的字符串(例:“#333333”),将字符串提取出16进制的部分,两两一组,生成对应的R、G、B三个元素。

2、涉及的方法

NSRange定义如下:

typedef struct _NSRange
        {
           NSUInteger location;
           NSUInteger length;
        } NSRange;

NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度。他们都是NSUInteger类型。代码中使用到了NSRange分割字符串。

    NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围

    NSRange有2个成员:

    NSUInteger location : 表示该范围的起始位置

    NSUInteger length : 表示该范围内的长度

// 从六位数值中找到RGB对应的位数并转换NSRange range;range.location = 0;range.length = 2;//R G BNSString *rString = [cString substringWithRange:range];range.location = 2;NSString *gString = [cString substringWithRange:range];range.location = 4;NSString *bString = [cString substringWithRange:range];// Scan values,unsigned int表示无符号的整数,int可以为负数unsigned int r, g, b;[[NSScanner scannerWithString:rString] scanHexInt:&r];[[NSScanner scannerWithString:gString] scanHexInt:&g];[[NSScanner scannerWithString:bString] scanHexInt:&b];

3、源代码

UIColor+ZWHexColor.h

@interface UIColor (ZWHexColor)+ (UIColor *)hexColor:(NSString *)color;
+ (UIColor *)hexColor:(NSString *)color alpha:(CGFloat)alpha;@end

UIColor+ZWHexColor.m

#import "UIColor+ZWHexColor.h"@implementation UIColor (ZWHexColor)+ (UIColor *)hexColor:(NSString *)color {return [UIColor hexColor:color alpha:1];
}+ (UIColor *)hexColor:(NSString *)color alpha:(CGFloat)alpha {/*删除字符串中的空格stringByTrimmingCharactersInSet作用:去掉特殊字符whitespaceCharacterSet 去掉收尾的空格(注:只能去掉收尾的空格)*/NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];// String should be 6 or 8 charactersif (cString.length < 6) {return [UIColor clearColor];}/*判断前缀*///如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾if ([cString hasPrefix:@"0x"] || [cString hasPrefix:@"0X"]) {cString = [cString substringFromIndex:2];}//如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾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 BNSString *rString = [cString substringWithRange:range];range.location = 2;NSString *gString = [cString substringWithRange:range];range.location = 4;NSString *bString = [cString substringWithRange:range];// Scan values,unsigned int表示无符号的整数,int可以为负数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.0 green:(float)g / 255.0 blue:(float)b /255.0 alpha:alpha];
}@end

代码中使用了pch文件,使用教程请点击。

具体代码如下HexString。

iOS学习—UIColor使用16进制颜色相关推荐

  1. iOS 将16进制颜色转换成UIColor

    很多地方我们都使用16进制颜色,但iPhone使用的是UIColor对象,不直接支持16进制颜色,为此,需要我们手动将16进制颜色转换为UIColor - (UIColor *) hexStringT ...

  2. iOS 直接使用16进制颜色

    在做iOS开发时,一般我们会吸色,就是产品给的图我们一般会吸色,但是最近吸色时候,老大说有较大的颜色偏差,所以要求我们直接使用UI给出的额16进制颜色,你也可以搜索<RGB颜色值转换成十六进制颜 ...

  3. ios扩展16进制颜色

    iOS开发一般都是用到RGB颜色,美工给我们作图的时候往往给我们的色值都是十六进制的颜色如 #ff0000,如果先把16进制转换为RGB 的10 进制那将是非常麻烦的事,我们可以为 UIColor 添 ...

  4. iOS之颜色的调用、显示16进制颜色、渐变色

    十六进制颜色 #import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface UIColor (HexColor) + (UIColor ...

  5. 16进制颜色识别和搭配规律

    在CSS中,经常会用到16进制的颜色来设置文本.背景.边框等颜色,但是对于一个纯前端来讲,16进制颜色的识别和搭配可能会较为陌生了 ,本文简单介绍一下16进制颜色的一些规律 16进制颜色的数值意义: ...

  6. POI 自定义16进制颜色导出

    今天导入一个Excel 要求什么格式导入就怎么显示,包括字体 颜色,还要怎么导出.这个poi导入的是16进制颜色,导出比较麻烦.具体参考以下代码吧 private CellStyle createSt ...

  7. 16进制颜色识别和搭配规律 (实用)

    原文出处:https://blog.csdn.net/weixin_39037804/article/details/100266599 在CSS中,经常会用到16进制的颜色来设置文本.背景.边框等颜 ...

  8. rgb与16进制颜色是如何相互转换的?

    在css中定义颜色可以使用rgb颜色值,例:rgb(182, 0, 35):也可以使用16进制颜色值,例:#B60023.不管是rgb(182, 0, 35),还是#B60023都表示了同一种颜色,其 ...

  9. Android内部颜色转16进制颜色

    我们在Avtivity中设置控件的背景色的时候,会发现setBackgroundColor()居然需要int格式的颜色,本来以为是10进制的颜色,后来实验发现,不是10进制的,因为它是有负数的,它的范 ...

最新文章

  1. c语言作业 字符串替换,C语言字符串替换。解决方法
  2. msicuu.exe (msizap.exe),程序的作用
  3. 【Java】5.3 成员变量和局部变量
  4. springboot获取ApplicationContext的三种方式
  5. db2 创建样本数据库_db2创建数据库
  6. 纪中A组模拟赛总结(2021.7.13)
  7. Hive-分区分桶操作
  8. bash awk_Bash指南,Linux终端技巧,DevOps错误,Python,awk,NASA等
  9. Linux系统简介与准备
  10. Nginx 学习笔记(十)介绍HTTP / 2服务器推送(译)
  11. 戴尔服务器显示器接口类型,拒绝凌乱桌面 Type-C接口显示器的魅力
  12. 贪心科技机器学习训练营(十)
  13. word中使用mathtype编辑公式并添加序号
  14. us域名,什么是us域名?
  15. php解决缓慢http请求,php CURL 服务器响应慢的问题
  16. wireless tools工具的移植和使用
  17. ZoomEye:网络空间搜索引擎
  18. unity通过rtsp协议实现云台的实时连接(一)
  19. can总线程序讲解_CAN总线设计详解
  20. 恺撒密码(Python练习)

热门文章

  1. Oracle 12c、18c ASMFD特性研究
  2. 【html_table基础】使用colgroup col 设置列共同样式
  3. Christine Daaé
  4. 桌面计算机的密码修改频率,屏幕刷新频率改不了怎么办 怎么设置屏幕刷新频率...
  5. python那么多库怎么学_为什么大家都在学习python?原因在这里
  6. css 背景色透明且渐变且不影响文字颜色
  7. CA-IS36XX数字隔离器应用领域有哪些?
  8. Java的自定义类加载器及JVM自带的类加载器之间的交互关系
  9. SQLite数据库损坏及其修复探究
  10. android手机信号强度