2017-02-16 19 views
1

У меня есть глобальная тема, которая меняет цвет фона UITableViewHeaderFooterView. Ниже приведен код:iOS: переопределение UIAppearance appearanceWhenContainedInInstancesOfClasses

[[UIView appearanceWhenContainedInInstancesOfClasses:@[[UITableViewHeaderFooterView class]]] setBackgroundColor:[UIColor lightGray]]; 

Существует экземпляр на одном экране, где я хочу, чтобы переопределить этот цвет и изменить цвет на белый. Я пробовал следующий код:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderView") as? HeaderView 

    headerView.contentView.backgroundColor = UIColor.white 
    headerView.backgroundColor = UIColor.white 

    return headerView 
} 

Однако заголовок ViewView все еще появляется со светло-серым фоном. Любые идеи о том, как его переопределить?

+0

вы пробовали не HeaderFooterView в освобождении пакета из очереди и просто создать новый вид? – ystack

ответ

3

Вы можете сделать подкласс UITableViewHeaderFooterView - скажем WhiteUITableViewHeaderFooterView и настроить его для правильного заголовка.

Затем вы можете настроить внешний вид для представлений в этом классе [[UIView appearanceWhenContainedInInstancesOfClasses:@[[WhiteUITableViewHeaderFooterView class]]] setBackgroundColor:[UIColor white]];

0

Что касается изменения цвета фона в классе HeaderView в методе LayoutSubviews()? Вы можете сделать property этого класса, представляя, что это правильный вид для изменения цвета фона. Не уверен, что это лучший способ достичь этого, но должен быть обходным путем.