【发布时间】:2020-01-12 04:41:36
【问题描述】:
在 iOS 13 (Swift 5+) 中 scanHexInt32 的替代品是什么?
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)
)
}
}
参考:快照
【问题讨论】:
-
你解决了这个警告吗?
-
只需使用 UInt64。看看here。
-
换行:
Scanner(string: cString).scanHexInt64(&rgbValue) -
感谢 Rohit,我试过了,但收到了这个警告 - “无法将类型 '(UnsafeMutablePointer
?) -> Bool' 的值转换为预期的参数类型 'UInt32'” -
你需要为scanner.isAtEnd添加一个检查