如何在此 UIColor 扩展中包含 alpha?
extension UIColor {
convenience init(hex:Int) {
self.init(red:(hex >> 16) & 0xff, green:(hex >> 8) & 0xff, blue:hex & 0xff)
}
}
最佳答案
首先,UIColor
没有任何接受整数的初始化器。我假设你有另一个类似于 this 的扩展名.你必须在那里添加对 alpha 的支持
// we cannot name the param "alpha" because of a name collision
convenience init(red: Int, green: Int, blue: Int, a: Int = 255) {
self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: CGFloat(a) / 255)
}
convenience init(hex:Int) {
self.init(red:(hex >> 16) & 0xff, green:(hex >> 8) & 0xff, blue:hex & 0xff, a:(hex >> 24) & 0xff)
}
(假设 alpha 是第一个组件)。
如果你希望 alpha 只是一个额外的十进制数
convenience init(red: Int, green: Int, blue: Int, a: CGFloat = 1.0) {
self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: a)
}
convenience init(hex:Int, a: CGFloat = 1.0) {
self.init(red:(hex >> 16) & 0xff, green:(hex >> 8) & 0xff, blue:hex & 0xff, a: a)
}
关于ios - 如何扩展此 UIColor 十六进制函数以包含 alpha?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35736411/