我想将 String 转换为 UIColor
I want to convert String to UIColor
我正在研究ColorPickerView
这是我想要做的:
1.将获取的颜色保存为userdefault中的String。 (用于传递到另一个视图)
2. 在另一个视图中,我想检索存储在 userdefault 中的颜色字符串并将其 return 到 UIColor
→ 2 不起作用。
当你在控制台打印时
"UIExtendedSRGBColorSpace 1 0.34895 0.297971 1"
显示格式为.
从这种格式 returning 到 UIColor 的方法不起作用。
有没有办法获得红蓝绿 alpha 值?
从颜色选择器中获取颜色
func colorPickerViewController(colorPickerViewController: AMColorPickerViewController, didSelect color: UIColor) {
//userdefault
ud.set("\(color)", forKey: "color")
print("\(color)")
}
将保存的颜色显示回 UIColor
textcolor = ud.object(forKey: "color")
//!!I don't know the color specification here
label.textColor = ・・・・・
UIColor
符合 NSSecureCoding
所以你可以写 UserDefaults
的扩展
extension UserDefaults {
func color(forKey key: String) -> UIColor? {
guard let colorData = data(forKey: key) else { return nil }
if #available(iOS 11, *) {
return try? NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: colorData)
} else {
return NSKeyedUnarchiver.unarchiveObject(with: colorData) as? UIColor
}
}
func set(_ color: UIColor, forKey key: String) {
let data : Data
if #available(iOS 11, *) {
data = try! NSKeyedArchiver.archivedData(withRootObject: color, requiringSecureCoding: false)
} else {
data = NSKeyedArchiver.archivedData(withRootObject: color)
}
set(data, forKey: key)
}
}
try!
表达式不会崩溃,因为 color
参数是非可选参数并且 UIColor
确实符合 NSSecureCoding
。
旁注:
Anbu.Karthik 的评论提出了相同的方法,但链接文章中的代码很繁琐并且包含一些不好的做法。
我正在研究ColorPickerView
这是我想要做的: 1.将获取的颜色保存为userdefault中的String。 (用于传递到另一个视图) 2. 在另一个视图中,我想检索存储在 userdefault 中的颜色字符串并将其 return 到 UIColor → 2 不起作用。
当你在控制台打印时 "UIExtendedSRGBColorSpace 1 0.34895 0.297971 1" 显示格式为.
从这种格式 returning 到 UIColor 的方法不起作用。 有没有办法获得红蓝绿 alpha 值?
从颜色选择器中获取颜色
func colorPickerViewController(colorPickerViewController: AMColorPickerViewController, didSelect color: UIColor) {
//userdefault
ud.set("\(color)", forKey: "color")
print("\(color)")
}
将保存的颜色显示回 UIColor
textcolor = ud.object(forKey: "color")
//!!I don't know the color specification here
label.textColor = ・・・・・
UIColor
符合 NSSecureCoding
所以你可以写 UserDefaults
extension UserDefaults {
func color(forKey key: String) -> UIColor? {
guard let colorData = data(forKey: key) else { return nil }
if #available(iOS 11, *) {
return try? NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: colorData)
} else {
return NSKeyedUnarchiver.unarchiveObject(with: colorData) as? UIColor
}
}
func set(_ color: UIColor, forKey key: String) {
let data : Data
if #available(iOS 11, *) {
data = try! NSKeyedArchiver.archivedData(withRootObject: color, requiringSecureCoding: false)
} else {
data = NSKeyedArchiver.archivedData(withRootObject: color)
}
set(data, forKey: key)
}
}
try!
表达式不会崩溃,因为 color
参数是非可选参数并且 UIColor
确实符合 NSSecureCoding
。
旁注:
Anbu.Karthik 的评论提出了相同的方法,但链接文章中的代码很繁琐并且包含一些不好的做法。