苹果公司的文档称:
若要参与外观代理API,请在标头中使用UI_APPEARANCE_SELECTOR标记外观属性选择器。
在Objective中,可以用UI_APPEARANCE_SELECTOR来注释属性,如下所示:
@property (nonatomic, strong) UIColor *foregroundColor UI_APPEARANCE_SELECTOR;我怎么能在Swift中做同样的事情呢?
发布于 2015-02-26 05:18:13
将您的自定义视图属性标记为dynamic。
例如:
class YourCustomView: UIView {
@objc dynamic var subviewColor: UIColor? {
get { return self.yourSubview.backgroundColor }
set { self.yourSubview.backgroundColor = newValue }
}
...
}然后:
YourCustomView.appearance().subviewColor = UIColor.greenColor()发布于 2014-10-13 16:36:44
我没有找到解决办法,而是找到了解决办法。我没有对属性进行注释,而是将它们作为类变量。
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) 我希望它能帮到别人!
发布于 2014-11-17 16:39:03
在Swift中,您不需要(实际上,不能)用UI_APPEARANCE_SELECTOR对属性进行注释。
只需确保外观属性访问器方法的形式为:
func propertyForAxis1(axis1: IntegerType,axis2: IntegerType,axisN: IntegerType) -> PropertyType func setProperty(property: PropertyType,forAxis1 axis1: IntegerType,axis2: IntegerType) 来源:https://developer.apple.com/documentation/uikit/uiappearancecontainer
例如:
func setStarViewColor(color: UIColor) {
self.backgroundColor = color
}然后,您可以像这样设置外观属性:
MyView.appearance().setStarViewColor(someColor)我目前使用这个解决方案在我的Swift项目和它的工作,希望它对你也有帮助。
https://stackoverflow.com/questions/26170522
复制相似问题