Когда UIView
subClass
, такой как UITableViewCell
, загружен из Storyboard/Xib
, он применяет атрибуты, указанные в Attribute Inspector
, ко всем subViews
.У нас есть следующие методы обратного вызова, чтобы знать, когда представление загружается из Storyboard/Xib
,
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
}
override func awakeFromNib() {
super.awakeFromNib()
}
. Эти методы могут быть хорошими кандидатами для добавления / удаления подпредставления, но они не должны обновлять подпункт size
или некоторые из attribute inspector
связанных свойств.Рекомендуемый метод для обновления подвидов - когда суперпредставление завершает загрузку и применяет все свойства attribute inspector
и вызывает layoutSubviews
.Итак, вы должны применить любое косметическое изменение к подпредставлению.например,
override func layoutSubviews() {
super.layoutSubviews()
label.textColor = UIColor(named: "HighlightedGreen")
}
Для UITableViewCell
любой объект, реализующий UITableViewDataSource
, также гарантирует, что delegate
метод применяет любое косметическое изменение до отображения ячейки, как показано ниже, так что это также еще один хорошийкандидат на смену цвета.
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
(cell as! MyListTableViewCell).label.textColor = UIColor(named: "HighlightedGreen")
}