iOS:覆盖 UIAppearance appearanceWhenContainedInInstancesOfClasses
iOS: Override UIAppearance appearanceWhenContainedInInstancesOfClasses
我应用了一个全局主题,可以更改 UITableViewHeaderFooterView
的背景颜色。下面是代码:
[[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
}
但是,headerView 仍然显示为浅灰色背景。关于如何覆盖它的任何想法?
如何在 HeaderView
class 本身中以 LayoutSubviews()
之类的方法更改背景颜色?您可以为这个 class 创建一个 property
来表示这是否是更改其背景颜色的正确视图。不确定这是否是实现此目的的最佳方法,但应该是一种解决方法。
您可以创建 UITableViewHeaderFooterView
的子 class - 例如 WhiteUITableViewHeaderFooterView
并配置为正确的 header。
然后,您可以在 class [[UIView appearanceWhenContainedInInstancesOfClasses:@[[WhiteUITableViewHeaderFooterView class]]] setBackgroundColor:[UIColor white]];
中设置视图的外观
我应用了一个全局主题,可以更改 UITableViewHeaderFooterView
的背景颜色。下面是代码:
[[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
}
但是,headerView 仍然显示为浅灰色背景。关于如何覆盖它的任何想法?
如何在 HeaderView
class 本身中以 LayoutSubviews()
之类的方法更改背景颜色?您可以为这个 class 创建一个 property
来表示这是否是更改其背景颜色的正确视图。不确定这是否是实现此目的的最佳方法,但应该是一种解决方法。
您可以创建 UITableViewHeaderFooterView
的子 class - 例如 WhiteUITableViewHeaderFooterView
并配置为正确的 header。
然后,您可以在 class [[UIView appearanceWhenContainedInInstancesOfClasses:@[[WhiteUITableViewHeaderFooterView class]]] setBackgroundColor:[UIColor white]];