Использование цветов из каталога ресурсов в цветах переопределения 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). Есть идеи, как преодолеть эту проблему?