gpt4 book ai didi

ios - swift 3 将字符串颜色转换为 cgcolor

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:22:42 30 4
gpt4 key购买 nike

我是 swift 和 iOS 的新手,有些事情我不知道该怎么办。

我有来自后端的颜色,我想将其转换为 CGColor

"colors": [
"6909A1",
"7552D1",
"59B0DC",
"62E3CC"
],

func drawGradient(colors: [CGColor]) {
addLayer(colors: colors)
}

从 JSON 转换后,我应该怎么做才能传递 CGColor 数组。我找不到正确的解决方案如何从简单的字符串中获取 CGColor

最佳答案

UInt 有一个方便的初始化程序,可以将十六进制字符串转换为其十六进制值

func color(from hexString : String) -> CGColor
{
if let rgbValue = UInt(hexString, radix: 16) {
let red = CGFloat((rgbValue >> 16) & 0xff) / 255
let green = CGFloat((rgbValue >> 8) & 0xff) / 255
let blue = CGFloat((rgbValue ) & 0xff) / 255
return UIColor(red: red, green: green, blue: blue, alpha: 1.0).cgColor
} else {
return UIColor.black.cgColor
}
}

现在将字符串数组映射到颜色数组

let hexColors = ["6909A1", "7552D1", "59B0DC", "62E3CC"]

let gradientColors = hexColors.map { color(from:$0) }

或者在 UIColor 扩展中

extension UIColor {

convenience init(hexString : String)
{
if let rgbValue = UInt(hexString, radix: 16) {
let red = CGFloat((rgbValue >> 16) & 0xff) / 255
let green = CGFloat((rgbValue >> 8) & 0xff) / 255
let blue = CGFloat((rgbValue ) & 0xff) / 255
self.init(red: red, green: green, blue: blue, alpha: 1.0)
} else {
self.init(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
}
}
}

let hexColors = ["6909A1", "7552D1", "59B0DC", "62E3CC"]

let gradientColors = hexColors.map { UIColor(hexString:$0).cgColor }

关于ios - swift 3 将字符串颜色转换为 cgcolor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40765137/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com