参考了很多文章,集成一下,封装成两个文件,方便调用。做个笔记顺序如下。

1、首先新建一个swift文件,用来扩展UIColor。调用的时候输入的颜色字符串务必要写标准的长度。长度为6个或者8个。(当然,如果想自由一些的话,可以修改代码的处理字符串部分,省略或者补齐颜色位)。

import Foundation
import UIKitextension UIColor {/// 使用字符串方式生成自定义颜色。颜色格式0xAABBCCDD、#AABBCCDD/// 务必输入标准的颜色字符串格式。即#aabbcc、#aabbccddconvenience init(colorStr: String) {var colorString = colorStr.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased()/// 如果字符串不符合长度要求则返回默认颜色if colorString.count < 6 {self.init(red: 0, green: 0, blue: 0, alpha: 1.0)return}/// 截取后面的颜色字符数据if colorString.hasPrefix("0x") || colorString.hasPrefix("0X"){colorString = (colorString as NSString).substring(from: 2)}if colorString.hasPrefix("#") {colorString = (colorString as NSString).substring(from: 1)}/// 判断截取后的颜色字符串长度if colorString.count < 6 {self.init(red: 0, green: 0, blue: 0, alpha: 1.0)return}var rang = NSRange()rang.location = 0rang.length = 2/// 处理六位字符串长度,即没有透明度。否则处理包含字符透明度。if colorString.count == 6 {let rString = (colorString as NSString).substring(with: rang)rang.location = 2let gString = (colorString as NSString).substring(with: rang)rang.location = 4let bString = (colorString as NSString).substring(with: rang)var r:UInt64 = 0, g:UInt64 = 0,b: UInt64 = 0Scanner(string: rString).scanHexInt64(&r)Scanner(string: gString).scanHexInt64(&g)Scanner(string: bString).scanHexInt64(&b)print("AAA---  无透明度=r:\(rString),g:\(gString),b:\(bString)")let red = CGFloat(r) / 255.0let green = CGFloat(g) / 255.0let blue = CGFloat(b) / 255.0print("AAA---  无透明度RGB值=r:\(red),g:\(green),b:\(blue)")self.init(red: red, green: green, blue: blue, alpha: 1)return} else {let aString = (colorString as NSString).substring(with: rang)rang.location = 2let rString = (colorString as NSString).substring(with: rang)rang.location = 4let gString = (colorString as NSString).substring(with: rang)rang.location = 6let bString = (colorString as NSString).substring(with: rang)print("AAA---  有透明度=a:\(aString),r:\(rString),g:\(gString),b:\(bString)")var r:UInt64 = 0, g:UInt64 = 0,b: UInt64 = 0, a: UInt64 = 0Scanner(string: rString).scanHexInt64(&r)Scanner(string: gString).scanHexInt64(&g)Scanner(string: bString).scanHexInt64(&b)Scanner(string: aString).scanHexInt64(&a)let red = CGFloat(r) / 255.0let green = CGFloat(g) / 255.0let blue = CGFloat(b) / 255.0let alp = CGFloat(a) / 255.0print("AAA---  有透明度ARGB值=a:\(alp),r:\(red),g:\(green),b:\(blue)")self.init(red: red, green: green, blue: blue, alpha: alp)return}}
}

2、新建一个swift文件来自定义一些颜色字符串。这是从android的xml拷贝过来的,在android sudio很容易观看实际的效果。这里直接搬运一些常用的。

import Foundationstruct MyColor {/// 以下是自定义颜色表static let background_home = "#f0f0f0"/// 以下是常用颜色表static let transparent = "#00000000"static let transparent_20 = "#CC000000"static let transparent_30 = "#B3000000"static let transparent_40 = "#99000000"static let transparent_50 = "#80000000"static let transparent_80 = "#34000000"static let transparent_90 = "#19000000"static let amber_100 = "#ffecb3"static let amber_200 = "#ffe082"static let amber_300 = "#ffd54f"static let amber_400 = "#ffca28"static let amber_50 = "#fff8e1"static let amber_500 = "#ffc107"static let amber_600 = "#ffb300"static let amber_700 = "#ffa000"static let amber_800 = "#ff8f00"static let amber_900 = "#ff6f00"static let amber_a100 = "#ffe57f"static let amber_a200 = "#ffd740"static let amber_a400 = "#ffc400"static let amber_a700 = "#ffab00"static let black = "#000000"static let black_alpha_16 = "#10000000"static let black_alpha_32 = "#20000000"static let black_alpha_48 = "#30000000"static let black_alpha_64 = "#40000000"static let black_alpha_80 = "#50000000"static let black_alpha_96 = "#60000000"static let black_alpha_112 = "#70000000"static let black_alpha_128 = "#80000000"static let black_alpha_144 = "#90000000"static let black_alpha_160 = "#a0000000"static let black_alpha_176 = "#b0000000"static let black_alpha_192 = "#c0000000"static let black_alpha_208 = "#d0000000"static let black_alpha_224 = "#e0000000"static let black_alpha_240 = "#f0000000"static let blue_50 = "#e7e9fd"static let blue_100 = "#d0d9ff"static let blue_200 = "#afbfff"static let blue_300 = "#91a7ff"static let blue_400 = "#738ffe"static let blue_500 = "#5677fc"static let blue_600 = "#4e6cef"static let blue_700 = "#455ede"static let blue_800 = "#3b50ce"static let blue_900 = "#2a36b1"static let blue_a100 = "#a6baff"static let blue_a200 = "#6889ff"static let blue_a400 = "#4d73ff"static let blue_a700 = "#4d69ff"static let blue_grey_50 = "#eceff1"static let blue_grey_100 = "#cfd8dc"static let blue_grey_200 = "#b0bec5"static let blue_grey_300 = "#90a4ae"static let blue_grey_400 = "#78909c"static let blue_grey_500 = "#607d8b"static let blue_grey_600 = "#546e7a"static let blue_grey_700 = "#455a64"static let blue_grey_800 = "#37474f"static let blue_grey_900 = "#263238"static let brown_50 = "#efebe9"static let brown_100 = "#d7ccc8"static let brown_200 = "#bcaaa4"static let brown_300 = "#a1887f"static let brown_400 = "#8d6e63"static let brown_500 = "#795548"static let brown_600 = "#6d4c41"static let brown_700 = "#5d4037"static let brown_800 = "#4e342e"static let brown_900 = "#3e2723"static let cyan_50 = "#e0f7fa"static let cyan_100 = "#b2ebf2"static let cyan_200 = "#80deea"static let cyan_300 = "#4dd0e1"static let cyan_400 = "#26c6da"static let cyan_500 = "#00bcd4"static let cyan_600 = "#00acc1"static let cyan_700 = "#0097a7"static let cyan_800 = "#00838f"static let cyan_900 = "#006064"static let cyan_a100 = "#84ffff"static let cyan_a200 = "#18ffff"static let cyan_a400 = "#00e5ff"static let cyan_a700 = "#00b8d4"static let deep_orange_50 = "#fbe9e7"static let deep_orange_100 = "#ffccbc"static let deep_orange_200 = "#ffab91"static let deep_orange_300 = "#ff8a65"static let deep_orange_400 = "#ff7043"static let deep_orange_500 = "#ff5722"static let deep_orange_600 = "#f4511e"static let deep_orange_700 = "#e64a19"static let deep_orange_800 = "#d84315"static let deep_orange_900 = "#bf360c"static let deep_orange_a100 = "#ff9e80"static let deep_orange_a200 = "#ff6e40"static let deep_orange_a400 = "#ff3d00"static let deep_orange_a700 = "#dd2c00"static let deep_purple_50 = "#ede7f6"static let deep_purple_100 = "#d1c4e9"static let deep_purple_200 = "#b39ddb"static let deep_purple_300 = "#9575cd"static let deep_purple_400 = "#7e57c2"static let deep_purple_500 = "#673ab7"static let deep_purple_600 = "#5e35b1"static let deep_purple_700 = "#512da8"static let deep_purple_800 = "#4527a0"static let deep_purple_900 = "#311b92"static let deep_purple_a100 = "#b388ff"static let deep_purple_a200 = "#7c4dff"static let deep_purple_a400 = "#651fff"static let deep_purple_a700 = "#6200ea"static let green_50 = "#d0f8ce"static let green_100 = "#a3e9a4"static let green_200 = "#72d572"static let green_300 = "#42bd41"static let green_400 = "#2baf2b"static let green_500 = "#259b24"static let green_600 = "#0a8f08"static let green_700 = "#0a7e07"static let green_800 = "#056f00"static let green_900 = "#0d5302"static let green_a100 = "#a2f78d"static let green_a200 = "#5af158"static let green_a400 = "#14e715"static let green_a700 = "#12c700"static let grey_50 = "#fafafa"static let grey_100 = "#f5f5f5"static let grey_200 = "#eeeeee"static let grey_300 = "#e0e0e0"static let grey_400 = "#bdbdbd"static let grey_500 = "#9e9e9e"static let grey_600 = "#757575"static let grey_700 = "#616161"static let grey_800 = "#424242"static let grey_900 = "#212121"static let indigo_50 = "#e8eaf6"static let indigo_100 = "#c5cae9"static let indigo_200 = "#9fa8da"static let indigo_300 = "#7986cb"static let indigo_400 = "#5c6bc0"static let indigo_500 = "#3f51b5"static let indigo_600 = "#3949ab"static let indigo_700 = "#303f9f"static let indigo_800 = "#283593"static let indigo_900 = "#1a237e"static let indigo_a100 = "#8c9eff"static let indigo_a200 = "#536dfe"static let indigo_a400 = "#3d5afe"static let indigo_a700 = "#304ffe"static let light_blue_50 = "#e1f5fe"static let light_blue_100 = "#b3e5fc"static let light_blue_200 = "#81d4fa"static let light_blue_300 = "#4fc3f7"static let light_blue_400 = "#29b6f6"static let light_blue_500 = "#03a9f4"static let light_blue_600 = "#039be5"static let light_blue_700 = "#0288d1"static let light_blue_800 = "#0277bd"static let light_blue_900 = "#01579b"static let light_blue_a100 = "#80d8ff"static let light_blue_a200 = "#40c4ff"static let light_blue_a400 = "#00b0ff"static let light_blue_a700 = "#0091ea"static let light_green_50 = "#f1f8e9"static let light_green_100 = "#dcedc8"static let light_green_200 = "#c5e1a5"static let light_green_300 = "#aed581"static let light_green_400 = "#9ccc65"static let light_green_500 = "#8bc34a"static let light_green_600 = "#7cb342"static let light_green_700 = "#689f38"static let light_green_800 = "#558b2f"static let light_green_900 = "#33691e"static let light_green_a100 = "#ccff90"static let light_green_a200 = "#b2ff59"static let light_green_a400 = "#76ff03"static let light_green_a700 = "#64dd17"static let lime_50 = "#f9fbe7"static let lime_100 = "#f0f4c3"static let lime_200 = "#e6ee9c"static let lime_300 = "#dce775"static let lime_400 = "#d4e157"static let lime_500 = "#cddc39"static let lime_600 = "#c0ca33"static let lime_700 = "#afb42b"static let lime_800 = "#9e9d24"static let lime_900 = "#827717"static let lime_a100 = "#f4ff81"static let lime_a200 = "#eeff41"static let lime_a400 = "#c6ff00"static let lime_a700 = "#aeea00"static let orange_50 = "#fff3e0"static let orange_100 = "#ffe0b2"static let orange_200 = "#ffcc80"static let orange_300 = "#ffb74d"static let orange_400 = "#ffa726"static let orange_500 = "#ff9800"static let orange_600 = "#fb8c00"static let orange_700 = "#f57c00"static let orange_800 = "#ef6c00"static let orange_900 = "#e65100"static let orange_a100 = "#ffd180"static let orange_a200 = "#ffab40"static let orange_a400 = "#ff9100"static let orange_a700 = "#ff6d00"static let pink_50 = "#fce4ec"static let pink_100 = "#f8bbd0"static let pink_200 = "#f48fb1"static let pink_300 = "#f06292"static let pink_400 = "#ec407a"static let pink_500 = "#e91e63"static let pink_600 = "#d81b60"static let pink_700 = "#c2185b"static let pink_800 = "#ad1457"static let pink_900 = "#880e4f"static let pink_a100 = "#ff80ab"static let pink_a200 = "#ff4081"static let pink_a400 = "#f50057"static let pink_a700 = "#c51162"static let purple_50 = "#f3e5f5"static let purple_100 = "#e1bee7"static let purple_200 = "#ce93d8"static let purple_300 = "#ba68c8"static let purple_400 = "#ab47bc"static let purple_500 = "#9c27b0"static let purple_600 = "#8e24aa"static let purple_700 = "#7b1fa2"static let purple_800 = "#6a1b9a"static let purple_900 = "#4a148c"static let purple_a100 = "#ea80fc"static let purple_a200 = "#e040fb"static let purple_a400 = "#d500f9"static let purple_a700 = "#aa00ff"static let red_50 = "#fde0dc"static let red_100 = "#f9bdbb"static let red_200 = "#f69988"static let red_300 = "#f36c60"static let red_400 = "#e84e40"static let red_500 = "#e51c23"static let red_600 = "#dd191d"static let red_700 = "#d01716"static let red_800 = "#c41411"static let red_900 = "#b0120a"static let red_a100 = "#ff7997"static let red_a200 = "#ff5177"static let red_a400 = "#ff2d6f"static let red_a700 = "#e00032"static let teal_50 = "#e0f2f1"static let teal_100 = "#b2dfdb"static let teal_200 = "#80cbc4"static let teal_300 = "#4db6ac"static let teal_400 = "#26a69a"static let teal_500 = "#009688"static let teal_600 = "#00897b"static let teal_700 = "#00796b"static let teal_800 = "#00695c"static let teal_900 = "#004d40"static let teal_a100 = "#a7ffeb"static let teal_a200 = "#64ffda"static let teal_a400 = "#1de9b6"static let teal_a700 = "#00bfa5"static let white = "#ffffff"static let white_alpha_16 = "#10ffffff"static let white_alpha_32 = "#20ffffff"static let white_alpha_48 = "#30ffffff"static let white_alpha_64 = "#40ffffff"static let white_alpha_80 = "#50ffffff"static let white_alpha_96 = "#60ffffff"static let white_alpha_112 = "#70ffffff"static let white_alpha_128 = "#80ffffff"static let white_alpha_144 = "#90ffffff"static let white_alpha_160 = "#a0ffffff"static let white_alpha_176 = "#b0ffffff"static let white_alpha_192 = "#c0ffffff"static let white_alpha_208 = "#d0ffffff"static let white_alpha_224 = "#e0ffffff"static let white_alpha_240 = "#f0ffffff"static let yellow_50 = "#fffde7"static let yellow_100 = "#fff9c4"static let yellow_200 = "#fff59d"static let yellow_300 = "#fff176"static let yellow_400 = "#ffee58"static let yellow_500 = "#ffeb3b"static let yellow_600 = "#fdd835"static let yellow_700 = "#fbc02d"static let yellow_800 = "#f9a825"static let yellow_900 = "#f57f17"static let yellow_a100 = "#ffff8d"static let yellow_a200 = "#ffff00"static let yellow_a400 = "#ffea00"static let yellow_a700 = "#ffd600"}

3、如何使用?调用方式如下:

    override func viewDidLoad() {super.viewDidLoad()self.view.backgroundColor = UIColor(colorStr: MyColor.blue_100)}

4、最后,不同的屏幕显示的可能会有差异。按照苹果官方的文档的话,并不建议使用自定义颜色,而是推荐使用他们的系统颜色api。但是有一些颜色api要求在ios13以上,不兼容低版本,这就很尴尬。比如灰色是可用的,但灰色5是需要高版本:

self.view.backgroundColor = UIColor.systemGrayself.view.backgroundColor = UIColor.systemGray5
/// ERROR: 'systemGray5' is only available in iOS 13.0 or newer

Swift 十六进制颜色字符串的自定义相关推荐

  1. Swift 十六进制颜色转换

    import UIKit extension UIColor { //用数值初始化颜色,便于生成设计图上标明的十六进制颜色 convenience init(valueRGB: UInt, alpha ...

  2. [C/C++11]_[初级]_[如何转换带井号的#十六进制颜色字符串到数值]

    场景 表示颜色的RGB值,一般有两种方法,一种是使用使用数值表示RGB(255,255,255),一种是使用字符串#FE07AB.那么字符串形式的表示如何得到r,g,b各值的数值大小呢? 说明 在&l ...

  3. 「 swift 」UIColor 加载十六进制颜色,标准写法带透明度

    一.前言 iOS 开发对于方法的拓展实在不行,不像 android 可以直接加载十六进制色值 我在国外论坛上,看到大佬的一种写法,感觉很有用,这里分享给大家 二.实现 下面我将逐步提出几种方案,一步步 ...

  4. iOS开发技巧(系列十八:扩展UIColor,支持十六进制颜色设置)

    新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置. UIColor+Hex.h文件, #import <UIKit/UIKit.h> # ...

  5. 颜色字符串转换(正则)

    题目描述 将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff 1. rgb 中每个 , 后面的空格数量不固定 2. 十六进制表达式使用六位小写字 ...

  6. C语言 十六进制整数字符串转十进制整数

    [问题描述] 给定一个不超过0xFFFFFFFF的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. 样例输入 FFFF ...

  7. js中RGB与十六进制颜色转换

    一.关于颜色的表示 颜色的表示方式不知一种,从photoshop的取色面板就可以看出,如下: 上图共显示了5种颜色的表示方法:HSB,lab,RGB,CMYK与十六进制表示法 在CSS中,我们也经常与 ...

  8. 【译】CSS 十六进制颜色揭秘

    本文讲的是[译]CSS 十六进制颜色揭秘, 原文地址:CSS Hex Colors Demystified 原文作者:Dave Gash 译文出自:掘金翻译计划 本文永久链接:github.com/x ...

  9. 如何使用正则表达式验证十六进制颜色代码

    十六进制颜色代码正则表达式模式 ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ 描述 ^ #start of the line# # must constains a " ...

最新文章

  1. WebSocket+MSE——HTML5 直播技术解析
  2. 通过Cookie实现客户端与服务端会话的维持;
  3. dropbox文件_Dropbox即将发布的扩展程序更新将添加更多文件编辑支持,包括Pixlr照片...
  4. mysql密码命名规则_MySql命名规范
  5. php 二维数组排序函数,php自定义函数实现二维数组排序功能
  6. 创建触发器,将数据库中表的修改记录进日志表
  7. npm run test报错
  8. mysql 索引长度解释及不使用索引的一种特殊情况
  9. 学linux哪个版本号,初学Linux哪个发行版本好?这些更合适!
  10. linux 查看tongweb进程,TongWeb日志如何查看?
  11. Unity 5.4 公开测试版发布:增强的视觉效果,更佳的性能表现
  12. 黑马 docker 学习笔记
  13. 恩智浦(飞思卡尔)智能车舵机和电机PID控制
  14. 《Loy解说SpringBoot的注解》
  15. 哈希表(散列表)——C++数据结构详解
  16. endnote使用心得
  17. 基于SSM的学生会管理系统-基于ssm的社团信息管理系统-java项目
  18. 1040: [ZJOI2008]骑士
  19. 失信人查询 API数据接口
  20. TLV文档阅读笔记-What is TLV及protobuf

热门文章

  1. header报文时间通用送法
  2. Google Play Store 下的软件something went wrong,please try again解决办法
  3. 腾讯Web前端JX框架入门教程(一)
  4. 200行Python制作音乐下载器,支持所有主流的平台
  5. c语言单元测试及答案,C语言程序设计单元测试答案
  6. android接私活的网址
  7. 部署k3s + Rancher
  8. flex 联机游戏开发 - 四国军棋游戏:(二)棋盘棋子
  9. 2022年全球市场食用香精香料总体规模、主要生产商、主要地区、产品和应用细分研究报告
  10. Android 集成 zxing