我正在尝试为我的 uiTableView 创建一个标题视图(不是节标题,我已经有了。)我已经在界面生成器中设置了一个 XIB。所有的连接都已连接好并且运行良好......除了桌子没有给它足够的空间!我的问题是表格顶部与表格标题有一点重叠。
我的 XIB 为所有按钮设置了自动布局,IB 很高兴这些约束不冲突/不明确。视图设置为自由格式大小,在我的例子中最终为 320 x 471。然后在视图的约束中,我为相同的视图设置了固有大小。
现在这与我的桌子完美配合。一切看起来都很棒。但是,如果我使用代码手动更改标题视图中的任何字体,布局会使视图更大,并且它最终会出现在我的表格下方。
有什么想法如何让 tableviewcontroller 在设置字体和大小后为标题视图留出足够的空间吗?我希望我的解释是有道理的。
注意:可以在此处找到 Swift 3+ 版本:https://gist.github.com/marcoarment/1105553afba6b4900c10#gistcomment-1933639 https://gist.github.com/marcoarment/1105553afba6b4900c10#gistcomment-1933639
这个想法是在帮助下计算标题的高度systemLayoutSizeFittingSize:targetSize
.
返回满足其所持有的约束的视图的大小。
考虑所有约束来确定视图的最佳大小
保留及其子视图的保留。
更改标题高度后,需要重新分配tableHeaderView
属性来调整表格单元格。
基于这个答案:在 UITableView 中使用自动布局来实现动态单元格布局和可变行高 https://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts-variable-row-heights?lq=1
- (void)sizeHeaderToFit
{
UIView *header = self.tableView.tableHeaderView;
[header setNeedsLayout];
[header layoutIfNeeded];
CGFloat height = [header systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect frame = header.frame;
frame.size.height = height;
header.frame = frame;
self.tableView.tableHeaderView = header;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)