我有一个带有标题的表视图控制器,我想给出一定的背景颜色。我还希望文本“John Doe”与菜单图标完全对齐,如下面的屏幕截图所示:
为了确保“John Doe”与菜单图标完全对齐,并设置正确的背景颜色,我使用以下代码:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let inset = UIEdgeInsetsMake(20, 0, 0, 0);
tableView.contentInset = inset
tableView.backgroundColor = UIColor(red: 0.63, green: 0.64, blue: 0.66, alpha: 1.0)
}
状态栏(“Carrier / 8:57 AM”)高度为20,因此需要插入以确保John Doe正确对齐。
效果很好,但现在空行也是这种背景颜色。我尝试在“Logout”按钮下添加一个空视图,并为它提供与行相同的颜色,但我似乎无法将其一直延伸到表视图控制器的底部。
我也尝试过设置表头的背景颜色,但这不起作用,因为状态栏没有正确的背景颜色(因为插图)。
如何确保“退出”按钮下方的所有内容与实际行的背景颜色相同?
编辑:设置表格的背景颜色会导致:
现在状态栏也有这种颜色,因为插图。
答案 0 :(得分:0)
使用tableView.backgroundColor
,您将背景颜色设置为整个tableview,这仅适用于标题,因为它具有UIColor.clearColor()
(透明)作为默认颜色。
如果你想要lightGrey中的所有表格,只需要那个深灰色的标题,你需要将表格背景设置为相同的单元格,然后实现willDisplayHeaderView
只是为了设置标题颜色:
func tableView(tableView: UITableView,
willDisplayHeaderView view: UIView,
forSection section: Int){
let header = view as! UITableViewHeaderFooterView
header.contentView.backgroundColor = UIColor(red: 0.63, green: 0.64, blue: 0.66, alpha: 1.0)
}
答案 1 :(得分:0)
我无法获得任何建议,所以我只创建一个填充屏幕其余部分的表格页脚:
var menuItems = ["Dial", "Settings", "CallHistory", "Logout"]
let headerHeight = CGFloat(64)
let cellHeight = 56
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let inset = UIEdgeInsetsMake(20, 0, 0, 0)
let totalMenuItemHeight = menuItems.count * cellHeight
tableView.contentInset = inset
tableView.backgroundColor = UIColor(red: 0.63, green: 0.64, blue: 0.66, alpha: 1.0)
tableView.tableFooterView = UIView()
tableView.tableFooterView!.backgroundColor = UIColor(red: 0.98, green: 0.98, blue: 0.98, alpha: 1.0)
tableView.tableFooterView!.frame.size.height = tableView.frame.height - CGFloat(headerHeight) - CGFloat(totalMenuItemHeight)
}