Мне кажется, что я схожу с ума от чего-то, что может быть действительно простым.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
)