更新
从头开始创建新项目时,我无法重新创建问题。 tableHeaderView的高度始终与故事板中的高度相匹配。但是,如果我将故事板复制到一个全新的项目并将其设置为主要故事板,则可以看到问题。
您可以在此处下载我的测试项目:
https://www.dropbox.com/sh/k5kc4syk563mm5y/AAAct3YbNp_S133rt7-iaftia?dl=0
在故事板中,我有UIViewController
个UITableView
。我在桌面视图顶部拖放了UIVIew
(紫色视图),Xcode自动为我生成tableHeaderView
。
当我构建并运行时,tableHeaderView
会占用整个屏幕。
如果我在iPhone 6上的NSLog
中viewDidAppear
表格{{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}},以便在设备上运行时高度显示相似?
答案 0 :(得分:2)
答案 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)