0

请问如何从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)
        }
    }
}
4

1 回答 1

3

假设您使用的是 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一个实例属性并将一个实例存储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使用UIColor.scheme1.darkGray.

于 2018-03-16T18:16:08.110 回答