Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 空行和节标题的Swift表格视图背景_Ios_Swift_Uitableview_Swift2 - Fatal编程技术网

Ios 空行和节标题的Swift表格视图背景

Ios 空行和节标题的Swift表格视图背景,ios,swift,uitableview,swift2,Ios,Swift,Uitableview,Swift2,我有一个带有标题的表视图控制器,我想给它一个特定的背景颜色。我还希望文本“John Doe”与菜单图标完全对齐,如您在以下屏幕截图中所示: 为了确保“John Doe”与菜单图标完全对齐,并设置正确的背景色,我使用以下代码: override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) let inset = UIEdgeInsetsMake(20, 0, 0,

我有一个带有标题的表视图控制器,我想给它一个特定的背景颜色。我还希望文本“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正确对齐

这很好,但是现在空行也是这个背景色。我曾尝试在“注销”按钮下添加一个空视图,并将其设置为与行相同的颜色,但我似乎无法将其一直延伸到表视图控制器的底部

我也尝试过设置表格标题的背景色,但这不起作用,因为状态栏没有正确的背景色(因为插入)

如何确保注销按钮下的所有内容与实际行的背景颜色相同

编辑:设置表格的背景色会导致以下结果:


现在,状态栏也有这种颜色,这是因为插入了
tableView.backgroundColor
,您正在为整个tableView设置背景色,这对标题有效,因为它有
UIColor.clearColor()
(透明)作为默认颜色

如果希望所有表格均为浅灰色,而标题仅为深灰色,则需要将表格背景设置为与单元格相同的颜色,然后实现仅用于设置标题颜色:

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

使用
tableView.backgroundColor
可以将背景色设置为整个tableView,这对标题有效,因为它的默认颜色是
UIColor.clearColor()
(透明)

如果希望所有表格均为浅灰色,而标题仅为深灰色,则需要将表格背景设置为与单元格相同的颜色,然后实现仅用于设置标题颜色:

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

我无法获得任何建议,因此我只创建了一个表格页脚,填充屏幕的其余部分:

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

我无法获得任何建议,因此我只创建了一个表格页脚,填充屏幕的其余部分:

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

用结果更新了我的帖子。状态栏现在也是这种颜色。有没有办法在表视图控制器中将其更改回黑色?如果设置self.edgesForExtendedLayout=UIRectEdgeNoneUITableViewController?您必须适当地设置应用程序窗口的背景颜色(在您的情况下,设置标题的颜色)。但是我想它也会改变你右边状态栏的颜色。是的,我试过了,而且背景颜色是正确的。与我的第二个屏幕截图中的结果相同。如何显示tableview控制器?在UINavigationController中作为根用户或仅作为窗口的根用户?将navigationController的背景颜色设置为标题的灰色,而不要为tableview设置contentInset。然后你应该有灰色的状态栏匹配你的标题。但是,当滚动标题时,标题将与状态栏断开连接,您将看到状态栏和标题之间的白色背景。使用该结果更新我的帖子。状态栏现在也是这种颜色。有没有办法在表视图控制器中将其更改回黑色?如果设置self.edgesForExtendedLayout=UIRectEdgeNoneUITableViewController?您必须适当地设置应用程序窗口的背景颜色(在您的情况下,设置标题的颜色)。但是我想它也会改变你右边状态栏的颜色。是的,我试过了,而且背景颜色是正确的。与我的第二个屏幕截图中的结果相同。如何显示tableview控制器?在UINavigationController中作为根用户或仅作为窗口的根用户?将navigationController的背景颜色设置为标题的灰色,而不要为tableview设置contentInset。然后你应该有灰色的状态栏匹配你的标题。但当滚动时,标题将与状态栏断开连接,并且在状态栏和标题之间会看到白色背景