设置表标题视图的高度时出现奇怪的行为

时间:2016-01-14 14:19:23

标签: ios xcode swift uitableview autolayout

我试图让我的表格标题与其内容一样高。在故事板中似乎不可能这样做,所以我尝试在加载视图时以编程方式设置高度。然而,表头高于其子视图,而帧大小则相同。

我在viewDidLoad函数中执行了此操作。

override func viewDidLoad() {
    super.viewDidLoad()

    ongoingOrderTableView.backgroundColor = UIColor.blueColor()
    tableHeader.backgroundColor = UIColor.redColor()

    tableHeader.frame.size.height = 440
    print(tableHeader.frame.size)
    //(560.0, 440.0) 
    print(qrLabel.frame.size)
    //(54.0, 21.0)
    print(qrImage.frame.size)
    //(440.0, 440.0)

} 

印刷结果显示设置正确。

模拟器上的用户界面如下:enter image description here

有人可以解释为什么会发生这种情况以及如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

使用自动布局时,iOS将保持600 * 600的屏幕大小,直到调用func viewDidLayoutSubviews()。因此,您应该在viewDidLayoutSubviews()而不是viewDidLoad()中对布局进行动态调整。

我也将print(tableHeader.frame.size)放在viewDidLayoutSubviews()中,结果是(374.0,501.0)。当我在这个函数中调整标题高度时,结果都是正确的。

答案 1 :(得分:0)

viewDidLayoutSubviews()中设置表格标题视图的高度。 要调试该问题,请在viewDidLayoutSubviews()中添加一个断点并检查标题高度。

根据我的经验,如果您不从情节提要中添加tableHeaderView,就会发生这种情况。

答案 2 :(得分:0)

这是导航栏的问题,

尝试将顶部栏切换为Opaque Navigation Bar,在情节提要上选择NavigationController>模拟度量>顶部栏>不透明导航栏

例如,具有图像视图:

enter image description here

默认/半透明:

enter image description here

不透明: enter image description here