UILabel в UITableViewCell в файле .xib игнорирует темный режим

У меня есть свой собственный UITableViewCells в .xib файлах. Поскольку Xcode 11 Beta 5 (также тестировался с Beta 6), мой UILabels игнорирует темный режим, и текст всегда черный. Я установил цвет текста UILabel на значение по умолчанию (цвет метки), поэтому он должен измениться автоматически. У кого-нибудь есть идеи, что не так?

Вот снимок экрана: первая ячейка - это базовая ячейка, вторая - пользовательская ячейка в файле .xib.

введите описание изображения здесь


person patrickS    schedule 20.08.2019    source источник
comment
У меня такая же проблема, но, похоже, она распространяется на все файлы пера (а не только на UITableViewCells). Это тоже твой опыт? Он отлично работает, если целью развертывания является iOS13, но если вы снизите его до iOS12, он перестанет работать правильно.   -  person Z S    schedule 21.08.2019
comment
Странно, что динамический цвет фона работает правильно, а ярлыки - нет. Это немного мешает мне реализовать темный режим ...   -  person Andrew Bennet    schedule 03.09.2019


Ответы (4)


Аналогичная проблема здесь. Некоторые динамические цвета, используемые в XIB, не используют свою темную версию, когда включен темный режим.

Это происходит как в Симуляторе, так и на реальных устройствах. Цвета действительно отображаются правильно при имитации темного режима в Xcode (Interface Builder).

Моя цель развертывания проекта - iOS 10.

person Loïc Gardiol    schedule 20.08.2019
comment
Моя цель развертывания проекта - iOS 11 - person patrickS; 21.08.2019

Xcode 11 GM Seed 2, который был выпущен сегодня, кажется, устранил проблему.

Из примечания к выпуску:

Исправлена ​​проблема, из-за которой системные цвета в файлах XIB, настроенных на развертывание до iOS 13.0, не могли адаптироваться к внешнему виду системы во время выполнения. (54362252)

person Alfred Woo    schedule 17.09.2019
comment
Нет, не починил. Даже не 11,1 - person AsifHabib; 14.10.2019

@ Эндрю Беннет, это сработало для меня. Спасибо. Мне пришлось реализовать обходной путь в Objective-C, потому что эта часть моего приложения все еще находится в Objective-C.

- (void)awakeFromNib {
    [super awakeFromNib];
    if (@available(iOS 13.0, *)) {
        // The label's textColor was set to secondaryLabel in the XIB editor
        // but we reassign it to secondaryLabel again here. This prevents
        // a bug where the label always appears in its light mode variant.
//        label.textColor = .secondaryLabel
        lblTitle.textColor = UIColor.secondaryLabelColor;
    }
}
person Larry Ricker    schedule 29.10.2019

person    schedule
comment
Похоже, что iOS 13.1 Beta 3 и iOS 13 GM исправили ошибку. Я также обновил свой Xcode до 11 GM. Вызовы awakeFromNib больше не требуются. - person patrickS; 11.09.2019
comment
добавление ‹nil key = textColor /› не решает проблему для темного режима. Вы также должны указать цвет. - person AsifHabib; 14.10.2019