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

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

import Foundation

import UIKit

extension UIColor {

/// 使用字符串方式生成自定义颜色。颜色格式0xAABBCCDD、#AABBCCDD

/// 务必输入标准的颜色字符串格式。即#aabbcc、#aabbccdd

convenience 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 = 0

rang.length = 2

/// 处理六位字符串长度,即没有透明度。否则处理包含字符透明度。

if colorString.count == 6 {

let rString = (colorString as NSString).substring(with: rang)

rang.location = 2

let gString = (colorString as NSString).substring(with: rang)

rang.location = 4

let bString = (colorString as NSString).substring(with: rang)

var r:UInt64 = 0, g:UInt64 = 0,b: UInt64 = 0

Scanner(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.0

let green = CGFloat(g) / 255.0

let blue = CGFloat(b) / 255.0

print("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 = 2

let rString = (colorString as NSString).substring(with: rang)

rang.location = 4

let gString = (colorString as NSString).substring(with: rang)

rang.location = 6

let 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 = 0

Scanner(string: rString).scanHexInt64(&r)

Scanner(string: gString).scanHexInt64(&g)

Scanner(string: bString).scanHexInt64(&b)

Scanner(string: aString).scanHexInt64(&a)

let red = CGFloat(r) / 255.0

let green = CGFloat(g) / 255.0

let blue = CGFloat(b) / 255.0

let alp = CGFloat(a) / 255.0

print("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 Foundation

struct 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.systemGray

self.view.backgroundColor = UIColor.systemGray5

/// ERROR: 'systemGray5' is only available in iOS 13.0 or newer

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。