Могу ли я изменить значение UIColor без создания нового экземпляра? - PullRequest
0 голосов
/ 06 декабря 2018

Мне кажется, что я схожу с ума от чего-то, что может быть действительно простым.UIColor - это класс, поэтому ссылочный тип, но я не могу понять, почему.Чтобы изменить цвет, я просто создаю новый экземпляр, вместо того, чтобы держаться за ту же ссылку и изменять одно из ее свойств (поэтому я в конечном итоге принимаю поведение «тип значения»).

Я пропустилчто-то здесь? Как мне обращаться с UIColor как с типом ссылки, когда я хочу изменить цвет (скажем, изменить его hex или rgba)?

Вот мой пример:

У меня естьvar primaryColor = UIColor! и var secondaryColor = UIColor! внутри пользовательского UIView.У меня также есть пара «под-переменных» (т.е. borderColor, mainTitleColor, subTitleColor), которым я назначаю ссылку либо primaryColor, либо secondaryColor во время awakeFromNib.

Проблема в том, что, если я изменяю значение цвета primaryColor или secondaryColor во время выполнения, значения под-переменных (borderColor, mainTitleColor и т. Д.) Не изменяются, и я понимаю, что это потому, что я назначаюновый экземпляр UIColor вместо изменения свойств экземпляра.

Поэтому у меня такой вопрос: существует ли способ сохранить тот же экземпляр UIColor, но изменить его значение 'color'? Я надеюсь, что это имеет смысл.

Мой текущий обходной путь - наблюдатели свойств переменных primaryColor и secondaryColor, каждая из которых изменяет все под-переменные, если они соответствуют oldValue)

...