1.空自定义视图实现
我创建了一个如下的空子类:UITableViewHeaderFooterView
class MyCustomHeaderView: UITableViewHeaderFooterView {
}
我用我的表格视图注册了那个类:
tableView.register(MyCustomHeaderView.self, forHeaderFooterViewReuseIdentifier: "myHeaderView")
并实现数据源功能如下:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "myHeaderView")
return headerView
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Hello"
}
正如预期的那样,这就是我得到的:一个看起来就像系统默认值的标题视图。
2. 覆盖的自定义视图实现drawRect(_:)
现在我首先实现这个子类的原因是因为我想执行一些自定义绘图。因此,我实现了该drawRect(_:)
方法:
class MyCustomHeaderView: UITableViewHeaderFooterView {
override func draw(_ rect: CGRect) {
super.draw(rect)
}
}
同样,除了调用实现之外,我在此方法中什么也不做super
。所以从我的角度来看,这不应该改变任何东西,因为如果我不实现它,super
无论如何都会调用实现。
但是,当我现在启动该应用程序时,这就是我得到的:
标题视图的背景完全用纯黑色填充。
为什么?
附加信息:
我做了一些研究并阅读了几篇建议将标题视图的isOpaque
属性设置为false
. 我这样做了,我什至为标题视图设置了它backgroundView
-contentView
没有效果。
但是,我在 Xcode 中的 Debug View Hierarchy 中检查了它实际上MyCustomHeaderView
是黑色的,而不是它的子视图,并且该视图实际上是不透明的——即使我false
在代码中明确将其设置为。
(从屏幕截图中可以看出,我在一个全新的项目中进行了尝试,特别是使用默认的 Xcode 主从模板,以排除我的自定义表格视图可能导致这种情况的可能性。)