tableHeaderView使用自动布局和故事板显示全高

时间:2015-04-16 22:21:55

标签: ios objective-c uitableview autolayout uistoryboard

更新

从头开始创建新项目时,我无法重新创建问题。 tableHeaderView的高度始终与故事板中的高度相匹配。但是,如果我将故事板复制到一个全新的项目并将其设置为主要故事板,则可以看到问题。

您可以在此处下载我的测试项目:

https://www.dropbox.com/sh/k5kc4syk563mm5y/AAAct3YbNp_S133rt7-iaftia?dl=0


在故事板中,我有UIViewControllerUITableView。我在桌面视图顶部拖放了UIVIew(紫色视图),Xcode自动为我生成tableHeaderView

enter image description here

当我构建并运行时,tableHeaderView会占用整个屏幕。

enter image description here

如果我在iPhone 6上的NSLogviewDidAppear表格{{0, 0}, {320, 568}},我会获得tableHeaderView

如果您有多行标签,则有大量关于重置systemLayoutSizeFittingSize:的SO Q / A,其中建议使用- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; UIView *headerView = self.tableHeaderView; [headerView setNeedsLayout]; [headerView layoutIfNeeded]; CGFloat height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; NSLog(@"height: %@", @(height)); headerView.frame = ({ CGRect headerFrame = headerView.frame; headerFrame.size.height = height; headerFrame; }); self.tableHeaderView = headerView; API:

height

}

我已经尝试了这一点,并且a)甚至没有为我工作,因为tableHeaderView最终为0,而​​b)此时我只是想尝试打印出我的虚拟标签,它们有一个固定的高度。

如何在故事板中配置{{1}},以便在设备上运行时高度显示相似?

5 个答案:

答案 0 :(得分:2)

像@Jaques一样,我必须手动编辑tableHeaderView height属性才能成为我想要的。这必须是故事板中的错误。

我在TextEdit中搜索了“tableHeaderView”。

enter image description here

答案 1 :(得分:1)

我的项目遇到了同样的问题。我使用文本编辑器直接更改了storyboard文件。而且,问题解决了。

答案 2 :(得分:0)

不幸的是,我认为问题的根源是一个腐败的故事板。有不同的方法来解决这个问题(没有一个是理想的),比如删除和重新创建视图控制器,甚至捣毁故事板并重新开始。

答案 3 :(得分:0)

我遇到了同样的问题。如何在标题中创建UIView的IBOutlet并从那里指定高度?

 @IBOutlet weak var layerView: UIView!

然后在View Did Load

layerView.frame = CGRectMake(0, 0, self.tableView.bounds.width, 200)

答案 4 :(得分:0)

tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 200))
        tableView.tableHeaderView?.addSubview(outletTableHeaderView)