我使用故事板添加了一个UIView并对其进行了子类化。在此视图中,我以编程方式添加UITableView。以下是创建tableview并添加它的代码:
private func commonInit() {
self.backgroundColor = .clear
self.categoryTableView = UITableView(frame: CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height))
categoryTableView?.delegate = self
categoryTableView?.dataSource = self
self.categoryTableView?.backgroundView = nil
self.categoryTableView?.backgroundColor = .yellow
self.categoryTableView?.isScrollEnabled = false
self.categoryTableView?.allowsMultipleSelection = true
self.addSubview(categoryTableView!)
}
这就是它的样子。我期待tableview的背景为黄色(截图中为白色)
我还设置了单元格背景颜色以清除哪个似乎正在工作。当我查看UI层次结构时,很明显White正来自tableview。
我觉得这应该是真正的前进。奇怪的部分是线条self.categoryTableView?.isScrollEnabled = false
和self.categoryTableView?.allowsMultipleSelection = true
似乎都在起作用,但背景颜色变化不是。
答案 0 :(得分:0)
我在操场上测试了这个,结果是预期的。
import UIKit
import XCTest
import PlaygroundSupport
let view = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500))
PlaygroundPage.current.liveView = view
view.backgroundColor = UIColor.blue
let tableView = UITableView(frame:CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height))
tableView.backgroundColor = UIColor.yellow
view.addSubview(tableView)
结果:
我的猜测是在这里正在发生的事情。也许是框架大小的调整,或者调用commonInit()
方法的地方?
答案 1 :(得分:0)
我遇到了完全相同的问题,发现在tableView.backgroundColor
之后更改tableView.backgroundView = nil
无效。
我的案例也是在UITableView
内以编程方式创建的UIView
。
解决方案是将backgroundView
添加到tableView
并更改backgroundColor
对象的属性backgroundView
。
更改表格视图背景颜色
对于.clear
以外的其他任何颜色,上述方法均适用:
self.tableView.backgroundView = UIView() //Create a backgroundView
self.tableView.backgroundView!.backgroundColor = .lightGray //choose your background color
更改tableViewCells背景颜色
再进一步,由于UITableViewCell
实例的背景色,有些人可能发现tableView背景色未按预期显示。确保单元格具有透明背景的简单解决方案:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.contentView.backgroundColor = UIColor.clear
cell.backgroundColor = .clear
}