我正在以編程方式使用 alpha 設定十六進制顏色,但結果看起來不像預期的那樣。示例:十六進制顏色 #478295,不透明度為 50%,即 #80478295,我正在使用 `
public convenience init?(hex: String) {
let r, g, b, a: CGFloat
if hex.hasPrefix("#") {
let start = hex.index(hex.startIndex, offsetBy: 1)
let hexColor = String(hex[start...])
if hexColor.count == 8 {
let scanner = Scanner(string: hexColor)
var hexNumber: UInt64 = 0
if scanner.scanHexInt64(&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
}
`
預期:紅色:0.277,綠色:0.511,藍色:0.583,alpha:0.5
實際:紅色 0.5019607843137255 綠色 0.2784313725490196 藍色 0.5098039215686274 alpha 0.5843137254901961
預期結果
實際結果
Xcode:13.2.1
uj5u.com熱心網友回復:
在您的問題中,您將 alpha 放在前 8 位,而不是最后一位。所以它是這樣的:
a = CGFloat((hexNumber & 0xff000000) >> 24) / 255
r = CGFloat((hexNumber & 0x00ff0000) >> 16) / 255
g = CGFloat((hexNumber & 0x0000ff00) >> 8) / 255
b = CGFloat(hexNumber & 0x000000ff) / 255
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491669.html
