Swift - 在Swift中使用#define

时间:2014-08-22 17:44:58

标签: iphone swift

我有一个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)

我希望能够使用CellTextColor进行Swift中的着色。但它不允许我运行宏。只有当我#define value @"string"时,它才能在Swift中运行。

我还需要做些什么吗?

我阅读了以下链接:

How to use Objective-C code with #define macros in Swift

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html

1 个答案:

答案 0 :(得分: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

更通用的答案是,它总是非常依赖于宏是什么以及它如何被使用。