Использование цветов из каталога ресурсов в цветах переопределения XIB, установленных во время инициализации UITableViewCell

В нашем проекте мы переключаемся на использование цветов из каталога активов. Мы сталкиваемся с какой-то странной проблемой при использовании новых цветов в XIB.

Простая настройка, табличное представление с ячейками, заполненными из XIB:

tableView.register(R.nib.notificationTextListViewCell(), forCellReuseIdentifier: "id")

источник данных:

extension AddTraineeViewController: UITableViewDataSource {
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath)
        let notificationCell = cell as? NotificationTextListViewCell
        notificationCell?.label?.text = "AAAAAAA"
        notificationCell?.label?.textColor = .blue
        return cell
    }
}

Как видите, я меняю textColor метки на синий во время настройки в cellForRowAtIndexPath.

Если цвет текста в xib установлен на один из предопределенных (из раздела "iPhoneSDK"), все работает нормально. Цвет правильно установлен на синий:

Однако, если цвет установлен на один из каталога активов:

во время выполнения синий цвет не установлен:

Если я добавлю настройку нужного цвета в layoutSubviews ячейки:

class NotificationTextListViewCell: UITableViewCell {
    @IBOutlet weak var label: UILabel!

    override func layoutSubviews() {
        label.textColor = .blue
        super.layoutSubviews()
    }
}

Это работает снова. Этот обходной путь не подходит в моем случае, так как я хочу выполнить настройку одного снимка в cellForRowAtIndexPath и не хранить информацию о цвете, который должен быть установлен в классе ячеек.

Мой вывод заключается в том, что при использовании цвета из каталога ресурсов в XIB цвет несколько оценивается после инициализации ячейки (но до layoutSubviews). Есть идеи, как преодолеть эту проблему?

0 ответов

Другие вопросы по тегам