ios - 如何扩展此 UIColor 十六进制函数以包含 alpha?

标签 ios swift

如何在此 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/

相关文章:

arrays - 如何在 swift 中遍历包含两个整数之间所有数字的数组?

ios - 如何更新已保存在 Swift 中的 CoreData 条目?

ios - 获取用户的 iTunes Connect 用户名?

iphone - 如何从 iOS 上的 AudioQueue 服务获取样本

ios - 使用委托(delegate)将值保存到核心数据

ios - Firebase iOS - 将 StorageUploadTask 进度从 Double 转换为 Int

java - iOS : Write ByteArray ( [Int8] ) to a file in swift 4

ios - 本地化 IOS 按钮标签

iphone - MKOverlay 仅在 ios5 上覆盖具有奇怪情况的所有内容?

iOS 调用 Web 服务在 4g 上不起作用