在Swift中使用#define

3

我有一个名为Common.h的文件,其中定义了以下内容:

// Get UIColor from Hex value
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
#define CellTextColor UIColorFromRGB((uint32_t) 0x217EB5)

我希望能够在Swift中使用CellTextColor进行着色。但是它不允许我运行宏。只有当我使用#define value @"string"时,它才能在Swift中正常工作。
这里还需要做些什么吗?
我阅读了以下链接:
- 如何在Swift中使用Objective-C代码和#define宏 - https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html
1个回答

3
具体的答案可能是在UIColor上的扩展:
extension UIColor {

    class func fromRGB(rgb:UInt32) -> UIColor {
        return UIColor(
            red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(rgb & 0x0000FF) / 255.0,
            alpha: CGFloat(1.0)
        )
    }

    class var cellTextColor: UIColor {
        return UIColor.fromRGB(0x217eb5)
    }

}

这使得您可以使用:

let color = UIColor.cellTextColor

更一般的答案是,这将完全取决于宏是什么以及它最终如何被使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接