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

embedded/2024/9/23 7:24:51/

一、先了解什么是Hex色值

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

二、代码实现

iOS不如 Kotlin 有API可直接支持HEX赋值,得自己写个扩展方法

普通无透明度代码如下:

    // 示例NSString *hexStr = @"#FFFFFF";if ([hexStr hasPrefix:@"#"]) {hexStr = [cString substringFromIndex:1];}// 解析RGB值NSUInteger red = 0, green = 0, blue = 0;[[NSScanner scannerWithString:cString] scanHexInt:&red];[[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(2, 2)]] scanHexInt:&green];[[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(4, 2)]] scanHexInt:&blue];// 将RGB值转换为CGFloat并创建UIColorCGFloat redFloat = (CGFloat)red / 255.0;CGFloat greenFloat = (CGFloat)green / 255.0;CGFloat blueFloat = (CGFloat)blue / 255.0;return [UIColor colorWithRed:redFloat green:greenFloat blue:blueFloat alpha:1.0];

带透明度的代码如下(注意此处解析顺序是RGBA,如仿Kotlin可改为ARGB):

    // 示例NSString *hexStr = @"#FFFFFFFF";if ([hexStr hasPrefix:@"#"]) {hexStr = [cString substringFromIndex:1];}// 解析RGBA值NSUInteger red = 0, green = 0, blue = 0, alpha = 0;[[NSScanner scannerWithString:cString] scanHexInt:&red];[[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(2, 2)]] scanHexInt:&green];[[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(4, 2)]] scanHexInt:&blue];[[NSScanner scannerWithString:[cString substringWithRange:NSMakeRange(6, 2)]] scanHexInt:&alpha];// 将RGBA值转换为CGFloat并创建UIColorCGFloat redFloat = (CGFloat)red / 255.0;CGFloat greenFloat = (CGFloat)green / 255.0;CGFloat blueFloat = (CGFloat)blue / 255.0;CGFloat alphaFloat = (CGFloat)alpha / 255.0;return [UIColor colorWithRed:redFloat green:greenFloat blue:blueFloat alpha:alphaFloat];

http://www.ppmy.cn/embedded/18824.html

相关文章

AI时代的新沟通能力:结构化提示词

结构化提示词(Structured Prompts)是在使用大型语言模型(Large Language Models,LLMs)时,用来引导模型生成特定类型输出的输入文本。这些提示词通常包含明确的指令和上下文信息,使得生成的文本更…

新版IDEA频繁卡顿(UI 冻结)解决方案

当开启多项目多环境或复杂项目大项目时,新版IDEA会频繁卡顿冻结UI。 因为IDEA是Java写的,卡顿自然就是因为频繁Full GC导致的。 新版IDEA使用了G1垃圾回收器,当期望STW内一直无法有效回收大对象时,就会触发Full GC(G1的…

vscode中jsconfig.json文件首行提示错误

在使用react框架开发前端时,文件jsconfig.json首行提示错误,打开设置,勾选如下图这项

Java基础入门day40

day40 DQL 分组补充 create table student(sid int,name varchar(20),sex char(6),score double,cid int ); ​ insert into student values(100, wukong, male, 99, 1); insert into student values(101, wuneng, male, 59, 1); insert into student values(102, wujing, ma…

结构化查询语言(SQL)的作用

结构化查询语言(SQL)的作用 结构化查询语言(SQL)是一种专门用来管理关系型数据库的语言。它具有以下重要作用: 1. 数据库管理 SQL被广泛应用于数据库管理,包括创建数据库、表和视图,定义数据…

【Flutter 面试题】 Dart 当中的 .. 表示什么?

【Flutter 面试题】 Dart 当中的 … 表示什么? 文章目录 写在前面口述回答补充说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 Flutter…

SpringBoot---------整合Redis

目录 第一步:引入依赖 第二步:配置Redis信息 第三步:选择Spring Data Redis进行操作Redis数据库 ①操作String类型数据(用的少) ②操作Object类型数据(重要!!!&#x…

村集体建设用地,开发乡村旅游项目,土地如何审批?

以村集体建设用地,开发乡村旅游项目,土地如何审批? 乡村,作为承载乡村旅游产业的载体,在乡村振兴中扮演着非常重要的角色。 项目的落地,可靠的土地是必要的前提。集体建设用地如何审批?农转非又需要什么样的流程,具体…