外观代理/ UI_APPEARANCE_SELECTOR在Swift中?

苹果文档指出:

要join外观代理API,请使用UI_APPEARANCE_SELECTOR在标题中标记外观属性select器。

在Objective-C中,可以使用UI_APPEARANCE_SELECTOR注释属性,如下所示:

 @property (nonatomic, strong) UIColor *foregroundColor UI_APPEARANCE_SELECTOR; 

我如何在Swift中做同样的事情?

将您的自定义视图属性标记为dynamic

例如:

 class YourCustomView: UIView { dynamic var subviewColor: UIColor? { get { return self.yourSubview.backgroundColor } set { self.yourSubview.backgroundColor = newValue } } ... } 

然后:

 YourCustomView.appearance().subviewColor = UIColor.greenColor() 

我没有find解决scheme,但解决方法。 而不是注释的属性,我把他们作为一个类variables。

 private struct StarFillColor { static var _color = UIColor.blackColor() } internal class var starFillColor: UIColor { get { return StarFillColor._color } set { StarFillColor._color = newValue } } 

在我设置所有外观的文件中:

 MyClass.starFillColor = UIColor.r(181, g: 60, b: 109) 

我希望这会帮助别人!

在Swift中,你不需要(实际上,你不能)用UI_APPEARANCE_SELECTOR注解属性。

只要确保你的外观属性存取方法的forms是:

 func propertyForAxis1(axis1: IntegerType, axis2: IntegerType, axisN: IntegerType) -> PropertyType func setProperty(property: PropertyType, forAxis1 axis1: IntegerType, axis2: IntegerType) 

例如:

 func setStarViewColor(color: UIColor) { self.backgroundColor = color } 

然后你可以像这样设置你的外观属性:

 MyView.appearance().setStarViewColor(someColor) 

我目前在我的Swift项目中使用这个解决scheme,它的工作原理,希望对你也有帮助。