我想知道如何为UILabel实现文本样式的更多细节。 我想在Storyboard的IBInspectable字段中键入String,获取此值并在样式文件(switch case)中查找它。
我试过这样做:
设置“用户定义的运行时属性”。
关键路径为样式,
输入为
的字符串,
值为“你好”
我读过我应该在UILabel类中声明这个属性,所以:
extension UILabel{
var style: String? {
get(){
return self.style // it always fails
}
set(newValue){
objc_setAssociatedObject(self, "styleNew", newValue,
objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
//instead of self.style = newValue
}
}
}
我在viewDidAppear方法中将其作为Outlet属性调用:
`print("Style", self.infoLabel.valueForKey("styleNew"))`
以及
`print("Style", self.infoLabel.styleNew)`
当我试图获得价值时,它失败了。我收到“bad_exc_access”错误,我试图修复它,但我不明白这种行为,并且在apple.developer上并不清楚。我发现只有教程,有关cornerRadius,borderColor和类似工作人员的问题。
我已尝试将return self.styleNew
替换为objc_getAssociatedObject(self, "styleNew")
,但也没有帮助。
答案 0 :(得分:0)
这是一个计算属性,你不能在getter中返回它自己。
如果您尝试通过设置样式字符串来设置标签的样式,我建议您保留样式的注册表,并且在设置样式属性时,只需将样式应用于UILabel。我试图实现类似的成功,所以你可以看看here。