Код: Выделить всё
let myColor = UIColor.label
Когда я программно устанавливаю темную тему, а затем запрашиваю компоненты цвета cgColor, он сообщает [ 1,0, 1,0]. Это правильно, потому что в темном режиме цвет текста должен быть белым.
Однако, когда я проверяю его из очереди отправки, он сообщает [0.0, 1.0], как если бы в светлом режиме тема.
Это минимальный образец воспроизведения:
Код: Выделить всё
class ViewController: UIViewController {
let myColor: UIColor = .label
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.windows.forEach {
$0.overrideUserInterfaceStyle = .dark
}
if let color = myColor.cgColor.components {
print("initially \(color)")
DispatchQueue.main.async {
if let color = self.myColor.cgColor.components {
print("in queue \(color)")
}
}
}
}
}
Код: Выделить всё
initially [1.0, 1.0]
in queue [0.0, 1.0]
Подробнее здесь: https://stackoverflow.com/questions/792 ... atch-queue