问题描述:iOS 7 在分组UITableView
中,表格视图的顶部和第一个单元格之间存在间隙。
奇怪的是,当我第一次加载内容时,表格看起来还可以(第一张图片),但是当我向下滚动时,顶部和第一个单元格之间会出现一个空格(第二张图片):
使用简单的样式不会发生这种行为,但不幸的是我需要使用分组表视图样式。
有什么想法吗?
问题描述:iOS 7 在分组UITableView
中,表格视图的顶部和第一个单元格之间存在间隙。
奇怪的是,当我第一次加载内容时,表格看起来还可以(第一张图片),但是当我向下滚动时,顶部和第一个单元格之间会出现一个空格(第二张图片):
使用简单的样式不会发生这种行为,但不幸的是我需要使用分组表视图样式。
有什么想法吗?
只需在你的ViewDidLoad
方法中添加这个
self.automaticallyAdjustsScrollViewInsets = NO;
答案对我和我的团队来说很有趣,而且工作起来很迷人
原因:
我们观察到这种情况仅发生在 View Hierarchy 中的第一个 View 上,如果这个第一个视图是 UITableView 的话。所以,所有其他类似的 UITableView 都没有这个烦人的部分,除了第一个。我们尝试将 UITableView 移出视图层次结构的第一位,并且一切都按预期工作。
通过在 Storyboard 中选择 xib 或控制器,转到视图控制器的属性检查器。取消选中Adjust Scroll View Insets in Layout。它会解决问题
如果您使用具有分组样式且只有 1 个组的 UITableView,请使用普通样式来解决您的问题。
UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
分组类型中此问题的最简单解决方案tableView
是:
tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
伙计们!我有同样的问题。TableView 在导航栏和第一个单元格之间出现了可用空间。这段代码救了我:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return 10;
}
else return 2;
}
UITableView 本身上方以及单元格之间有一个空间。在上面的 2 个不同答案中找到了我的解决方案。再次发布它,这样没有人会错过这两个解决方案。
这从上面删除了空间:
self.automaticallyAdjustsScrollViewInsets = NO;
这删除了单元格下方的空格:将 UITableView 的“样式”属性设置为“普通”
我正在使用Xcode 7.3.1
、iOS9
和swift 2
。我想分享对我有用的东西:
只需在你的ViewDidLoad
方法中添加这个
self.automaticallyAdjustsScrollViewInsets = false;
从 iOS 7 开始,您会自动获得组标题和一些空间。将您的应用程序与“设置”应用程序进行比较,您会看到。您可以通过告诉 UITableView 将标题高度设置为尽可能小来解决它。请参阅如何隐藏第一个组标题。
我意识到这是很久以前回答的,但是对于遇到类似情况的其他人,我将分享最终为我工作的内容:
如果您使用的是 xib,请选择顶层视图并在属性检查器的模拟指标区域中将“状态栏”设置为“无”。修复了我的间距问题。
对我来说,这不起作用
self.automaticallyAdjustsScrollViewInsets = NO;
这只会导致表格视图位于 NavigationBar 下方。
对我有用的是进入我的故事板,并调整我的 tableView 的大小。似乎我的 tableView 在顶部有 20px 的间隙以允许状态栏。我缩放它,一切都完美排列。
在一种非常奇怪的情况下,我在一个表格视图的顶部看到了这个额外的空间。
在我的导航堆栈中添加 aUIScrollView
作为我的第一个控制器的根视图后,如果我将下一个控制器作为Show Detail
segue 呈现,我的下一个控制器将在其表视图上方有空间。
我的解决方案是将segue更改为Present Modally
,一切恢复正常。
segue 变化中最奇怪的部分是,在我将根视图添加为 a之前UIScrollView
,我的Show Detail
segue 以模态方式呈现下一个控制器。然而,在我添加了 root之后UIScrollView
,Show Detail
segue 正在推动下一个控制器(这不是我想要的)。
有类似的问题,甚至将automaticAdjustsScrollViewInsets 设置为NO。这为我解决了:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
return CGFLOAT_MIN;
}
在UIViewController.h
iOS9 SDK中有一个方法:
@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
不是属性,所以
self.automaticallyAdjustsScrollViewInsets = NO;
应该
-(BOOL)automaticallyAdjustsScrollViewInsets{
return NO;
}