我希望将UITableView
的内容居中,其中包含在故事板中创建的headerView
和footerView
,以及UITableViewCell
。如何实现这一点?
这是我试图实现解决我的问题,但这不工作.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
CGFloat height = self.tableView.frameHeight - self.navigationController.navigationBar.frameHeight - [UIApplication sharedApplication].statusBarFrame.size.height - (self.rowCount * self.rowHeight);
self.tableView.tableHeaderView.frameHeight = height / 2.0;
}
所以我用tableView的高度减去navigationBar & statusBar的高度和单元格的高度得到了空白区域的高度,现在我得到了空白区域的高度,我把它除以2得到了页脚和页眉视图的高度。
9条答案
按热度按时间unhi4e5o1#
在视图将出现和从界面方向旋转函数中:
这会解决你的问题。
编辑
在viewWillLayoutSubviews中以及每次重新加载数据后调用更新表视图内容插入函数:
目标C
雨燕4
t1qtbnec2#
重写
viewDidLayoutSubviews
并将tableView的frame
与其contentSize
进行比较以设置其contentInset
。这适用于自调整表视图单元格👌
8ljdwjyq3#
使用
UITableView
的contentSize
属性,这样就不必考虑单元格height
或count
。在重新加载
tableView
-数据之后,以及当tableView
的包含视图变为可见时(viewWillAppear:
)和当其更改大小时(viewWillTransitionToSize:withTransitionCoordinator:
),更新contentInsets
。b1payxdu4#
基于Pipiks答案的Swift 3
busg9geu5#
在故事板中
TableView
的顶部添加一个UIView
(UIView应该是TableView的父级)。然后设置其约束以填充视图。现在,设置TableView的大小并设置其约束以垂直和水平居中顶部UIView
。这将解决您的问题。vcirk6k66#
我发现了导致计算错误的原因。self.tableView.bounds.size.height的值与viewWillAppear中的实际高度不同。我使用self.view.bounds.size.height代替。
z8dt9xmd7#
适用于SWIFT 3:
结果:
第一节第一节第一节第一节第二节第一节第三节第一节
xcitsw888#
您可以使用KVO来观察tableView的contentSize何时发生变化。我发现这是使用自动行高时的最佳方法。
nwwlzxa79#
像这样设置UITableView的框架
或者试试这个