如何将字符串%@转换为UIColor,然后将其用作函数。在UIColor扩展中。 。我在扩展程序中尝试了此操作,但没有用。
您可以创建一个默认值为String的Color枚举:
enum Color: String {
case red
case blue
case green
var create: UIColor {
switch self {
case .red:
return UIColor.red
case .blue:
return UIColor.blue
case .green:
return UIColor.green
}
}
}
因为它的默认值为String,所以可以使用字符串初始化枚举:
guard let color = Color(rawValue: "red") else { "handle invalid color error"; return }
let colorSelected = color.create //// colorSelected is now UIColor.red
您的问题不清楚。如果要将十六进制颜色转换为字符串,则代码如下:
internal func hexStringToUIColor (hex:String) -> UIColor {
var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
if (cString.hasPrefix("#")) {
cString.remove(at: cString.startIndex)
}
if ((cString.count) != 6) {
return UIColor.gray
}
var rgbValue:UInt64 = 0
Scanner(string: cString).scanHexInt64(&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)
)
}