我觉得我为某种可能非常简单的事情而疯狂。 UIColor是一个类,因此是一种引用类型,但是我无法确定原因。要更改颜色,我发现自己只是创建一个新实例,而不是坚持使用相同的引用并更改其属性之一(因此最终采用“值类型”行为)。
我在这里错过了什么吗? 我要更改颜色时如何将UIColor视为参考类型(例如,更改其十六进制或rgba)?
这是我的例子:
我在自定义UIView中有一个var primaryColor = UIColor!
和var secondaryColor = UIColor!
。我也有几个“子变量”(即borderColor
,mainTitleColor
,subTitleColor
),在此期间,我为其分配了primaryColor
或secondaryColor
的引用awakeFromNib
。
问题是,如果我在运行时更改primaryColor
或secondaryColor
颜色的值,则子变量(borderColor,mainTitleColor等)的值不会更改,而我理解这是因为我要分配UIColor的新实例,而不是更改实例的属性。
所以我的问题是:是否有一种方法可以维护UIColor的相同实例,但可以更改其“ color”值?,我希望这是有道理的。
我当前的解决方法是使用primaryColor
和secondaryColor
变量的属性观察器,如果每个子变量都与oldValue
匹配,则每个变量都会更改所有子变量。