В настоящее время я работаю с UIAppearance
для цветов всех моих выходов в моем проекте, что позволило мне создать свою собственную версию DIY для ночной моды в моем приложении для iOS.
образец:
UILabel.appearance().textColor = colorScheme.primaryColor
UILabel.appearance(whenContainedInInstancesOf: [MyController.self]).textColor = colorScheme.secondaryColor
...
Примечание: Colorscheme - это просто структура со всеми моими цветами, которые переключаются в зависимости от состояния .lightMode / .darkMode
Недавно я создал подкласс UICollectionViewCell
с UILabel
внутри, и я хотел использовать тот же метод для определения цветов внутри него. Однако мне трудно выяснить , как установить другой цвет для вложенной UILabel в зависимости от выбранного состояния ячейки .
Например:
// create a default UIView with specific backgroundColor
let selectedBackgroundView = UIView()
selectedBackgroundView.backgroundColor = colorScheme.selectedBackgroundColor
MyCollectionViewCell.appearance().backgroundColor = colorScheme.backgroundColor // default
MyCollectionViewCell.appearance().selectedBackgroundView = selectedBackgroundView // set specific view used when cell is selected
Этот код выше работает, когда я хочу установить разные цвета фона, когда выбран MyCollectionViewCell
или нет, однако я хочу, чтобы вложенный UILabel
также изменил свой fontColor
, в зависимости от того, выбрана ячейка или нет , Есть ли лучший способ добиться этого с UIAppearance
?