Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILabel扩展,用户定义的运行时属性_Ios_Swift_Uilabel_Runtime_Extension Methods - Fatal编程技术网

Ios UILabel扩展,用户定义的运行时属性

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

我想知道更多的细节如何实现文本样式到UILabel。 我想在情节提要的IBInspectable字段中键入字符串,获取该值并在样式文件(开关大小写)中查找它

我试着这样做:

  • 设置“用户定义的运行时属性”

    关键路径作为样式

    键入为

    值为“hello”

    我已经读过,我应该在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 
           }
       }
    
    }

  • 我在ViewDidAspect方法中将其作为Outlet属性调用:

     `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设置为自己。