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

标签 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)
        }
    }
}

最佳答案

假设您正在使用 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)
        }
    }
}

您可以使用 Scheme1.darkGray 从 Objective-C 访问 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()
}

您可以使用 UIColor.scheme1.darkGray 访问 darkGray

关于objective-c - UIColor swift 扩展 w/来自 Objective-C 的类访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49326975/

相关文章:

iphone - Zxing 与 Xcode 4

swift - 基于 Swift 的应用程序可以在 OS X 10.9/iOS 7 及更低版本上运行吗?

ios - Swift,创建一个通用的 UIViewController

ios - 在 UITableViewDelegate 扩展中使用未解析的标识符

Swift 扩展,调用中参数 #1 缺少参数

ios - 无法从 UIView 扩展调用方法

iPhone:我可以让 UIDatePicker 出现在 UIKeyboard 之上吗?

c++ - 如何获取本地网络上所有设备的名称和 ips?

ios - 如何以编程方式显示 View

ios - swift 重复链式动画