如何在Swift中调用Objective-C类别的方法

你如何在Swift中调用这样的Objective-C类别方法?

+(UIColor*)colorWithHexString:(NSString*)hex alpha:(float)alpha; 

编译器会自动查找常见的ObjC命名模式,并将Swift模式replace为它们的位置。 一个返回类的实例的ObjC类方法(并且以某种方式命名,看起来像)变成了一个Swift方便的构造器。

如果您有ObjC方法(由自定义类别定义):

  + (UIColor *)colorWithHexString:(NSString *)hex alpha:(float)alpha; 

编译器生成Swift声明:

 convenience init(hexString: String?, alpha: CFloat) 

你这样称呼它:

 let color = UIColor(hexString: "#ffffff", alpha: 1.0) 

在Swift 2.0或更高版本中,可以使用NS_SWIFT_NAMEmacros将ObjC工厂方法与命名模式导入Swift不匹配作为初始值设定项。 例如:

 @interface UIColor(Hex) + (UIColor *)hexColorWithString:(NSString *)string NS_SWIFT_NAME(init(hexString:)); @end // imports as extension UIColor { init(hexString: String) }