如何在Objective C的表视图中垂直居中表视图

Posted

技术标签:

【中文标题】如何在Objective C的表视图中垂直居中表视图【英文标题】:How to vertically center table view in a Table View in Objective C 【发布时间】:2014-05-11 14:46:30 【问题描述】:

我的情节提要中有表格视图。所以让我们知道我将总共有 5 行。这 5 行不会垂直占用整个屏幕空间,所以我希望这 5 行的组在屏幕上垂直居中,而不是从顶部开始并在按钮上有所有空白空间,因为只有5 行。

我如何做到这一点 (1) 使用 Storyboard 或 (2) 使用代码?

【问题讨论】:

ios7 中,分组标签会自动“居中”。您需要 iOS6 支持吗? 不,我使用的是IOS7。默认情况下,我的分组单元格不在屏幕中间。整个组从屏幕顶部开始,直到最后一个标签。 【参考方案1】:

你可以使用 UIScrollViews contentOffset-property,因为 UITableView 继承自 UIScrollView。这是文档的链接:https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html#//apple_ref/occ/instp/UIScrollView/contentOffset

基本上你只需设置一个点来定义 X 和 Y 偏移。因此,如果您希望 TableViews 内容从顶部偏移 100pts,您可以设置

myTableView.contentOffset = CGPointMake(0, -100); //(edited in response to Lavvo's comment)

就是这样!

编辑:由于它是一个属性,因此您可以在 Interface Builder 中设置它,但我现在无法检查。如果是这样,我猜它可能在“尺寸”面板中。

【讨论】:

好的,经过一些调整,这工作了。对于 Y 边界,我必须使用负数,因为它正在向上移动我的组单元格。所以我使用了 CGPointMake(0, -100); @Lavvo - 感谢您的反馈,我将编辑我的答案。【参考方案2】:

如果您的表格视图具有静态高度,那么在情节提要中最简单的做法是将表格视图的高度约束设置为您想要的高度。例如,如果您的单元格为 44,则 5*44 = 220。

然后为您的表格视图添加一个约束,使其在其容器中垂直居中。

这将使它与任何屏幕尺寸兼容,因为自动布局将自动将其置于视图容器中,无论它更改为何种尺寸。

【讨论】:

有道理,但这里的问题是屏幕高度小于桌子高度时。如果将约束添加到垂直居中,则 tableview 将不会完全显示。有什么办法可以解决这个问题,比如添加一个顶部垂直间距约束?

以上是关于如何在Objective C的表视图中垂直居中表视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在垂直线性布局中垂直居中视图?

如何垂直居中两个视图并相对于超级视图平均划分宽度?

在其他两个之间垂直居中视图

如何在 UITableViewCell 中垂直居中对齐 UIButton? (目标 C)

Objective-C:如何在 UIScrollView 中禁用垂直滚动

强制文本在 UILabel 中垂直居中