【问题标题】:How to convert Hex String into Hex Int for UIColor extension?如何将 Hex String 转换为 Hex Int 以用于 UIColor 扩展?
【发布时间】:2023-01-13 00:29:55
【问题描述】:

在我的设计规范中,我被赋予了一种颜色作为十六进制字符串,但在我正在处理的 Xcode 项目中,我需要为 UIColor 扩展提供一个 INT 类型的十六进制。

我拥有的十六进制字符串是“#9B9B9B”,但它需要以某种方式成为相同颜色的 Int 表示,因为在项目中 UIColor 有一个扩展(见下文)需要(hexInt:Int)和项目中给定的十六进制代码具有诸如 0x212120 之类的格式。

我如何将任何给定的十六进制字符串转换为此扩展的 Int?

extension UIColor {
    init(hexInt: Int) {
        self.init(
            red: CGFloat((hex >> 16) & 0xff) / 255,
            green: CGFloat((hex >> 8) & 0xff) / 255,
            blue: CGFloat(hex & 0xff) / 255,
            alpha: CGFloat(1))
    }
}

【问题讨论】:

标签: ios swift


【解决方案1】:

您可以使用以下方法轻松地将带有前导 # 的十六进制字符串转换为 Int

let colorString = "#9B9B9B"
if let code = Int(colorString.dropFirst(), radix: 16) {
    // use the Int value as needed
} else {
    // the color string wasn't valid
}

也许你可以在你的 UIColor 扩展名中添加一个额外的 init

convenience init?(code: String) {
    if let hex = Int(code.dropFirst(), radix: 16) {
        self.init(hexInt: hex)
    } else {
        return nil
    }
}

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 2019-06-04
    • 2014-04-17
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2014-12-08
    • 1970-01-01
    相关资源
    最近更新 更多