iOS 利用Hex色值设置颜色(可设置透明度利用4个字节色值赋值) ...

打印 上一主题 下一主题

主题 793|帖子 793|积分 2379

一、先了解什么是Hex色值

简单来说就是用十六机制来表现三原色,三原色不同强度组合出不同颜色;
详见:Hex色值是什么(含透明度)
二、代码实现

iOS不如 Kotlin 有API可直接支持HEX赋值,得自己写个扩展方法
普通无透明度代码如下:

  1.     // 示例
  2.     NSString *hexStr = @"#FFFFFF";
  3.     if ([hexStr hasPrefix:@"#"]) {
  4.          hexStr = [cString substringFromIndex:1];
  5.     }
  6.     // 解析RGB值
  7.     NSUInteger red = 0, green = 0, blue = 0;
  8.     [[NSScanner scannerWithString:cString] scanHexInt:&red];
  9.     [[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(2, 2)]] scanHexInt:&green];
  10.     [[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(4, 2)]] scanHexInt:&blue];
  11.     // 将RGB值转换为CGFloat并创建UIColor
  12.     CGFloat redFloat = (CGFloat)red / 255.0;
  13.     CGFloat greenFloat = (CGFloat)green / 255.0;
  14.     CGFloat blueFloat = (CGFloat)blue / 255.0;
  15.     return [UIColor colorWithRed:redFloat green:greenFloat blue:blueFloat alpha:1.0];
复制代码
带透明度的代码如下(留意此处分析次序是RGBA,如仿Kotlin可改为ARGB):

  1.     // 示例
  2.     NSString *hexStr = @"#FFFFFFFF";
  3.     if ([hexStr hasPrefix:@"#"]) {
  4.          hexStr = [cString substringFromIndex:1];
  5.     }
  6.     // 解析RGBA值
  7.     NSUInteger red = 0, green = 0, blue = 0, alpha = 0;
  8.     [[NSScanner scannerWithString:cString] scanHexInt:&red];
  9.     [[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(2, 2)]] scanHexInt:&green];
  10.     [[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(4, 2)]] scanHexInt:&blue];
  11.     [[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(6, 2)]] scanHexInt:&alpha];
  12.     // 将RGBA值转换为CGFloat并创建UIColor
  13.     CGFloat redFloat = (CGFloat)red / 255.0;
  14.     CGFloat greenFloat = (CGFloat)green / 255.0;
  15.     CGFloat blueFloat = (CGFloat)blue / 255.0;
  16.     CGFloat alphaFloat = (CGFloat)alpha / 255.0;
  17.     return [UIColor colorWithRed:redFloat green:greenFloat blue:blueFloat alpha:alphaFloat];
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表