UIColor swift扩展w /来自Objective-C的类访问

时间:2018-03-16 18:02:53

标签: objective-c swift swift-extensions bridging

如何从objective-c访问我的darkGray颜色?

@objc
extension UIColor
{
    @objc
    public class Scheme1: NSObject {
        static var darkGray: UIColor! {
            return UIColor(red: 16.0/255.0, green: 16.0/255.0, blue: 19.0/255.0, alpha: 1.0)
        }
    }
}

1 个答案:

答案 0 :(得分:2)

假设您使用的是Swift 4 @objc推断,darkGray必须声明为@objc

@objc
extension UIColor
{
    @objc
    public class Scheme1: NSObject {
        @objc static var darkGray: UIColor! {
            return UIColor(red: 16.0/255.0, green: 16.0/255.0, blue: 19.0/255.0, alpha: 1.0)
        }
    }
}

您可以使用darkGray从Objective-C访问Scheme1.darkGray。 Objective-C不支持嵌套类,因此Scheme1将在顶层导出。

如果确实想要以命名空间的方式访问Scheme1,即使是从Objective-C,您也可以使darkGray成为实例属性并存储{{1}的实例在您的扩展程序中:

Scheme1

您可以使用@objc extension UIColor { @objc public class Scheme1: NSObject { @objc var darkGray: UIColor! { return UIColor(red: 16.0/255.0, green: 16.0/255.0, blue: 19.0/255.0, alpha: 1.0) } } @objc public static var scheme1 = Scheme1() } 访问darkGray