Ios UILabel扩展,用户定义的运行时属性
我想知道更多的细节如何实现文本样式到UILabel。 我想在情节提要的IBInspectable字段中键入字符串,获取该值并在样式文件(开关大小写)中查找它 我试着这样做:Ios UILabel扩展,用户定义的运行时属性,ios,swift,uilabel,runtime,extension-methods,Ios,Swift,Uilabel,Runtime,Extension Methods,我想知道更多的细节如何实现文本样式到UILabel。 我想在情节提要的IBInspectable字段中键入字符串,获取该值并在样式文件(开关大小写)中查找它 我试着这样做: 设置“用户定义的运行时属性” 关键路径作为样式 键入为 弦 值为“hello” 我已经读过,我应该在UILabel类中声明此属性,以便: extension UILabel{ var style: String? { get(){ return self.style // it al
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
}
}
} `print("Style", self.infoLabel.valueForKey("styleNew"))`
而且
`print("Style", self.infoLabel.styleNew)`
当我试图获得价值时,它失败了。我收到了“坏的exc访问”错误,我试图修复它,但我不理解这种行为,在apple.developer上也不清楚。我只找到了教程、cornerRadius、borderColor和类似人员的问题。
我曾尝试将return
return self.styleNew
替换为objc\u getassociated object(self,“styleNew”)
,但也没有帮助。这是一个计算属性,无法在getter中返回自身
如果您试图通过设置样式字符串来设置标签的样式,我建议您保留一个样式注册表,当设置样式属性时,只需将样式应用于UILabel。我成功地实现了类似的功能,因此您可以查看。这是一个计算属性,您无法在getter中返回它自己
如果您试图通过设置样式字符串来设置标签的样式,我建议您保留一个样式注册表,当设置样式属性时,只需将样式应用于UILabel。我成功地实现了类似的功能,所以您可以看一看。您的代码对我很有帮助,一切对我都很好,但是获取{return“something”}怎么样才能在不返回自身的情况下获得正确的值?可能吗?设置这个值怎么样?实际上你所做的只是调用另一种方法来选择样式。对我来说,这是一种奇怪的行为,我不能将getter和setter设置为自身。您的代码对我非常有帮助,一切对我都很好,但是get{return“something”}如何在不返回自身的情况下获得正确的值呢?可能吗?设置这个值怎么样?实际上你所做的只是调用另一种方法来选择样式。对我来说,这是一种奇怪的行为,我不能将getter和setter设置为自己。