scanHexInt32iOS 13(Swift 5+)中有哪些替代品?
extension UIColor {
//--------------------------------------------
class func hexColor(hex:String) -> UIColor {
var cString:String = hex.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased()
if (cString.hasPrefix("#")) {
cString = String(cString[cString.index(cString.startIndex, offsetBy: 1)...])
}
if (cString.count != 6) {
return UIColor.gray
}
var rgbValue:UInt32 = 0
// warning in this line - 'scanHexInt32' was deprecated in iOS 13.0
Scanner(string: cString).scanHexInt32(&rgbValue)
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0) …Run Code Online (Sandbox Code Playgroud) 我有一个具有UIColor属性的对象:
class Beer: NSObject {
var color: UIColor?
...
}
Run Code Online (Sandbox Code Playgroud)
我将此保存到数据库中,因此我需要将此属性设置为有效的JSON类型,因此我正在考虑将其转换为字符串.如何转换为要存储的字符串,然后在使用该字符串加载时创建UIColor?
尝试将SwiftUI颜色更改为UIColor的实例。
我可以轻松地从UIColor中获取RGBA,但是我不知道如何获取“ Color”实例以返回相应的RGB和不透明度值。
@EnvironmentObject var colorStore: ColorStore
init() {
let red = //get red value from colorStore.primaryThemeColor
let green = //get red value from colorStore.primaryThemeColor
let blue = //get red value from colorStore.primaryThemeColor
let opacity = //get red value from colorStore.primaryThemeColor
let color = UIColor(red: red, green: green, blue: blue, alpha: opacity)
UINavigationBar.appearance().tintColor = color
}
Run Code Online (Sandbox Code Playgroud)
...或者也许有更好的方法来完成我想要的。