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

一、先了解什么是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并创建UIColor
    CGFloat 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并创建UIColor
    CGFloat 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];

相关推荐

  1. Android 透明度颜色对照表

    2024-04-24 06:20:08       79 阅读
  2. css 设置无背景

    2024-04-24 06:20:08       27 阅读
  3. Form.List的使用设置某个字段的

    2024-04-24 06:20:08       55 阅读
  4. Mysql不同条件设置相同的使用子查询)

    2024-04-24 06:20:08       41 阅读
  5. CKEditor编辑器的简单使用方法,取赋值

    2024-04-24 06:20:08       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 06:20:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 06:20:08       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 06:20:08       82 阅读
  4. Python语言-面向对象

    2024-04-24 06:20:08       91 阅读

热门阅读

  1. 【八股】Redis篇

    2024-04-24 06:20:08       29 阅读
  2. 代码随想录(番外)图论2

    2024-04-24 06:20:08       36 阅读
  3. Python自动化系列---Python基础

    2024-04-24 06:20:08       34 阅读
  4. 本地存储、自定义事件、全局事件总线

    2024-04-24 06:20:08       35 阅读
  5. Node.js在前端的妙用:打造更出色的Web体验

    2024-04-24 06:20:08       36 阅读
  6. Halide 高效的图像处理语言 简化图像编程

    2024-04-24 06:20:08       27 阅读
  7. 【Kotlin】Flow简介

    2024-04-24 06:20:08       28 阅读
  8. python制作小游戏2

    2024-04-24 06:20:08       36 阅读
  9. 伪装目标检测中数据集的标注格式:COCO和VOC

    2024-04-24 06:20:08       39 阅读
  10. CS4186 Assignment 2

    2024-04-24 06:20:08       40 阅读
  11. 002 springboot redis 防止表单重复提交

    2024-04-24 06:20:08       27 阅读
  12. echarts之事件交互

    2024-04-24 06:20:08       37 阅读
  13. GitLab 卸载步骤 - 完全卸载

    2024-04-24 06:20:08       34 阅读