我可以在不创建新实例的情况下更改UIColor值吗?

时间:2018-12-06 02:17:00

标签: ios swift pass-by-reference uicolor

我觉得我为某种可能非常简单的事情而疯狂。 UIColor是一个类,因此是一种引用类型,但是我无法确定原因。要更改颜色,我发现自己只是创建一个新实例,而不是坚持使用相同的引用并更改其属性之一(因此最终采用“值类型”行为)。

我在这里错过了什么吗? 我要更改颜色时如何将UIColor视为参考类型(例如,更改其十六进制或rgba)?

这是我的例子:

我在自定义UIView中有一个var primaryColor = UIColor!var secondaryColor = UIColor!。我也有几个“子变量”(即borderColormainTitleColorsubTitleColor),在此期间,我为其分配了primaryColorsecondaryColor的引用awakeFromNib

问题是,如果我在运行时更改primaryColorsecondaryColor颜色的值,则子变量(borderColor,mainTitleColor等)的值不会更改,而我理解这是因为我要分配UIColor的新实例,而不是更改实例的属性。

所以我的问题是:是否有一种方法可以维护UIColor的相同实例,但可以更改其“ color”值?,我希望这是有道理的。

我当前的解决方法是使用primaryColorsecondaryColor变量的属性观察器,如果每个子变量都与oldValue匹配,则每个变量都会更改所有子变量。

0 个答案:

没有答案