以编程方式设置UITableView的背景颜色不起作用
我已经添加了一个使用故事板和继承它的UIView。在这个视图中,我以编程方式添加了UITableView。这里是创建tableview并添加它的代码:以编程方式设置UITableView的背景颜色不起作用
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是来自桌面视图。
我觉得这应该是真的海峡前进。奇怪的部分是行self.categoryTableView?.isScrollEnabled = false
和self.categoryTableView?.allowsMultipleSelection = true
都似乎工作,但背景颜色变化不是。
我在操场上测试了这个,结果如预期。
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()
方法的地方?
'commonInit()'从所需的init?(编码器aDecoder:NSCoder)调用。我认为这可能是问题的一部分,因为在主线程中设置背景颜色(如@Badhan Ganesh建议的)似乎已经解决了这个问题。也许从'必需的init?(coder aDecoder:NSCoder)'调用函数'使得它运行在UI线程以外的线程上。 – keverly
在主线程中设置背景颜色。 –
@BadhanGanesh是的,它修复了它。谢谢! – keverly