【问题标题】:iOS: Override UIAppearance appearanceWhenContainedInInstancesOfClassesiOS:覆盖 UIAppearance 外观WhenContainedInInstancesOfClasses
【发布时间】:2017-02-16 20:25:48
【问题描述】:

我应用了一个全局主题,它改变了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 仍然以浅灰色背景显示。关于如何覆盖它的任何想法?

【问题讨论】:

  • 您是否尝试过不将 HeaderFooterView 出列而只是创建一个新视图?

标签: ios swift uitableview uiview uiappearance


【解决方案1】:

您可以创建 UITableViewHeaderFooterView 的子类 - 比如说 WhiteUITableViewHeaderFooterView 并将其配置为正确的标题。

然后,您可以设置该类中视图的外观[[UIView appearanceWhenContainedInInstancesOfClasses:@[[WhiteUITableViewHeaderFooterView class]]] setBackgroundColor:[UIColor white]];

【讨论】:

    【解决方案2】:

    LayoutSubviews() 这样的方法中更改HeaderView 类本身的背景颜色怎么样?你可以为这个类创建一个property,代表这是否是更改其背景颜色的正确视图。不确定这是否是实现这一目标的最佳方法,但应该是一种解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多