【问题标题】:How to access macro of UIColor from Swift如何从 Swift 访问 UIColor 的宏
【发布时间】:2015-07-26 03:05:11
【问题描述】:

objc 文件中有一个宏,如下所示。

#define kSOME_COLOR [UIColor colorWithRed:100/255.0 green:100/255.0 blue:100/255.0 alpha:1.0]

我想从 Swift 访问宏。

self.someView.backgroundColor = kSOME_COLOR

但是我得到了编译错误Use of unresolved identifier 'kNOTE_GREEN_COLOR' 有什么办法吗。

【问题讨论】:

    标签: ios objective-c swift macros uicolor


    【解决方案1】:

    Leo 是对的,你不能在 Swift 中拥有像 Macro 这样的 Objective C。你可以在你的 swift 类中重新定义它们。

    或者,如果您只想从目标 c 类中使用它们,那么您可以执行以下操作 在您的 .m 文件实现中,并在标题中公开它

    + (UIColor *)k_SOME_COLOR {
        return kSOME_COLOR;
    }
    

    在.h文件中

    + (UIColor *)k_SOME_COLOR;
    

    在快速文件中

    var someColor = Constants.k_SOME_COLOR() // Constants is class name
    

    为此,您需要使用 Swift 桥接头并将您的常量类包含在桥接头中,调用 Objective-C 代码的其余转换对 Swift 来说简直就是魔法。 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

    【讨论】:

      【解决方案2】:

      在 Swift 中没有宏,但是你可以通过定义一个常量来获得完全相同的结果,如下所示:

      let someGrayColor = UIColor(red: 100.0/255.0, green: 100.0/255.0, blue: 100.0/255.0, alpha: 1.0)
      
      self.someView.backgroundColor = someGrayColor
      

      【讨论】:

        猜你喜欢
        • 2015-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-02
        • 2019-05-07
        • 2014-09-25
        • 2016-08-03
        • 2015-09-22
        相关资源
        最近更新 更多