外观代理/ 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,它的工作原理,希望对你也有帮助。