У меня есть UIViewController
, который представлен модально другим UIViewController
. У этого UIViewController
есть UITableView
с пользовательским UIView
, установленным для него tableFooterView
.
. Поэтому у меня возникает проблема: некоторые цвета не отображаются должным образом при переключении внешнего вида устройства. Как я прочитал, cgColor
не адаптируется автоматически к изменениям внешнего вида:
Цветовой объект в этом свойстве не адаптируется автоматически к изменениям темного режима. Если вы используете его для установки цвета элементов интерфейса, вы должны обновить этот цвет самостоятельно, когда изменяется признак userInterfaceStyle текущей коллекции признаков. Информацию о том, как надежно применять информацию о цвете, см. В разделе Поддержка темного режима в вашем интерфейсе.
https://developer.apple.com/documentation/uikit/uicolor/1621954-cgcolor
Поэтому для решения этой проблемы я переопределяю traitCollectionDidChange
внутри UIView
, который использует cgColor
следующим образом:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
updateView()
}
В методе updateView
я просто обновляю свойства cgColor
некоторых подслоев, но этот метод никогда не получится называется. Я попытался переопределить этот метод в superview
из UIView
, который имеет ту же проблему. Он вызывается только на уровне UIViewController
, который бесполезен, потому что tableFooterView
еще не установлен на данный момент.
Есть идеи, как мне это решить?