空行和节标题

时间:2015-10-13 07:04:27

标签: ios swift uitableview swift2

我有一个带有标题的表视图控制器,我想给出一定的背景颜色。我还希望文本“John Doe”与菜单图标完全对齐,如下面的屏幕截图所示:

Screenshot

为了确保“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”按钮下添加一个空视图,并为它提供与行相同的颜色,但我似乎无法将其一直延伸到表视图控制器的底部。

我也尝试过设置表头的背景颜色,但这不起作用,因为状态栏没有正确的背景颜色(因为插图)。

如何确保“退出”按钮下方的所有内容与实际行的背景颜色相同?

编辑:设置表格的背景颜色会导致: Screenshot

现在状态栏也有这种颜色,因为插图。

2 个答案:

答案 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)
}