Быстрое расширение UIColor с доступом к классу из Objective-C
Как я могу получить доступ к своему темно-серому цвету из объектива-c, пожалуйста?
@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 ответ
Решение
Предполагая, что вы используете 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
,