gpt4 book ai didi

ios - 如何使用 swift 将 UIColor 转换为字符串并将字符串转换为 UIColor?

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:48 27 4
gpt4 key购买 nike

我有一个带有 UIColor 属性的对象:

class Beer: NSObject {
var color: UIColor?
...
}

我正在将其保存到数据库中,因此我需要将此属性转换为有效的 JSON 类型,因此我正在考虑将其转换为字符串。如何转换成字符串进行存储,然后在加载时使用该字符串创建 UIColor?

最佳答案

我已经为这两种转换放了一些示例,你仍然可以找到很多转换代码

对于从 UIColor 到十六进制字符串的转换,您可以使用以下代码:

extension UIColor {
var rgbComponents:(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var r:CGFloat = 0
var g:CGFloat = 0
var b:CGFloat = 0
var a:CGFloat = 0
if getRed(&r, green: &g, blue: &b, alpha: &a) {
return (r,g,b,a)
}
return (0,0,0,0)
}
// hue, saturation, brightness and alpha components from UIColor**
var hsbComponents:(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat) {
var hue:CGFloat = 0
var saturation:CGFloat = 0
var brightness:CGFloat = 0
var alpha:CGFloat = 0
if getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha){
return (hue,saturation,brightness,alpha)
}
return (0,0,0,0)
}
var htmlRGBColor:String {
return String(format: "#%02x%02x%02x", Int(rgbComponents.red * 255), Int(rgbComponents.green * 255),Int(rgbComponents.blue * 255))
}
var htmlRGBaColor:String {
return String(format: "#%02x%02x%02x%02x", Int(rgbComponents.red * 255), Int(rgbComponents.green * 255),Int(rgbComponents.blue * 255),Int(rgbComponents.alpha * 255) )
}
}

示例使用:

let myColorBlack = UIColor.blackColor().webColor         //#000000ff
let myLghtGrayColor = UIColor.lightGrayColor().webColor //#aaaaaaff
let myDarkGrayColor = UIColor.darkGrayColor().webColor

更多信息您可以查看:https://stackoverflow.com/a/28697136/4557505
https://gist.github.com/yannickl/16f0ed38f0698d9a8ae7

您可以将此字符串存储在数据库中,并在需要时检索它

从 HexString 到 UIColor

extension UIColor {
public convenience init?(hexString: String) {
let r, g, b, a: CGFloat

if hexString.hasPrefix("#") {
let start = hexString.startIndex.advancedBy(1)
let hexColor = hexString.substringFromIndex(start)

if hexColor.characters.count == 8 {
let scanner = NSScanner(string: hexColor)
var hexNumber: UInt64 = 0

if scanner.scanHexLongLong(&hexNumber) {
r = CGFloat((hexNumber & 0xff000000) >> 24) / 255
g = CGFloat((hexNumber & 0x00ff0000) >> 16) / 255
b = CGFloat((hexNumber & 0x0000ff00) >> 8) / 255
a = CGFloat(hexNumber & 0x000000ff) / 255

self.init(red: r, green: g, blue: b, alpha: a)
return
}
}
}

return nil
}
}

用法:UIColor(hexString: "#ffe700ff")

引用:https://www.hackingwithswift.com/example-code/uicolor/how-to-convert-a-hex-color-to-a-uicolor
https://github.com/yeahdongcn/UIColor-Hex-Swift
https://gist.github.com/arshad/de147c42d7b3063ef7bc

关于ios - 如何使用 swift 将 UIColor 转换为字符串并将字符串转换为 UIColor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36341358/

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