iOS 7 UITableView:如何删除导航栏和第一个单元格之间的空间

我的问题是:在分组的UITableView iOS 7中有一个从表顶部和第一个单元格的差距。

奇怪的是,当我第一次加载内容时,表格看起来像第一个图像,但是当我向下滚动时,在第一个单元格出现在第一个单元格之间:

在这里输入图像说明在这里输入图像说明

风格朴素这种行为没有出来,但不幸的是我需要使用分组表视图。

任何想法?

只要在你的ViewDidLoad方法中join这个

 self.automaticallyAdjustsScrollViewInsets = NO; 

答案对我和我的团队来说非常有趣,而且像一个魅力

  • 在Interface Builder中,只需在视图层次结构中的另一个视图下移动tableview。

原因:

我们观察到,如果这个第一个视图是一个UITableView的话这只会发生在视图层次结构中的第一视图 。 所以,所有其他类似的UITableViews没有这个烦人的部分,除了第一个。 我们尝试将UITableView移出视图层次结构中的第一位,并且所有内容都按预期工作。

它解决了我的类似问题:

 if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){ tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0); } 

通过selectStoryboard中的xib或控制器,转到View Controller的属性检查器。 取消选中布局中调整滚动查看插图 。 这将解决问题 在这里输入图像说明

如果你正在使用UITableView分组风格,只有1组,使用普通风格,而不是解决你的问题。

 UITableViewController *tableViewController; tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain]; 

分组typestableView最简单的解决scheme是:

 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本身上面有一个空格,而且在单元之间也有空格。 find我的解决scheme在上面的两个不同的答案..再次发布,以便没有人会错过这两个解决scheme。

这从上面删除了空间:

 self.automaticallyAdjustsScrollViewInsets = NO; 

并删除单元格下方的空格:将UITableView的'Style'属性设置为'Plain'

我正在使用Xcode 7.3.1iOS9iOS9 swift 2 。 我想分享一下对我有用的东西:

只要在你的ViewDidLoad方法中join这个

 self.automaticallyAdjustsScrollViewInsets = false; 

从iOS 7开始,您将自动获取组头和一些空间。 将您的应用与“设置”应用进行比较,即可看到。 您可以通过告诉UITableView尽可能小地设置标题高度来解决这个问题。 请参阅如何隐藏第一个组标题 。

我意识到这是很久以前的答案,但是对于遇到类似情况的其他人,我将分享最终为我工作的东西:

如果您正在使用xib,请select顶层视图,并在“属性”检查器的“模拟度量标准”区域中将“状态栏”设置为“无”。 修正了我的间距问题。

对我来说这是行不通的

self.automaticallyAdjustsScrollViewInsets = NO;

这只会导致表视图位于NavigationBar下。

什么对我来说是进入我的故事板,并调整我的tableView。 看来我的tableView有一个20px的差距在顶部允许statusBar。 我把它缩小了,所有东西都排得很整齐。

在一个非常奇怪的情况下,我在桌面的顶部看到了这个额外的空间。

在我的导航堆栈中添加了一个UIScrollView作为我的第一个控制器的根视图,如果我将下一个控制器作为Show Detail segue呈现,则我的下一个控制器将在其视图之上有空间。

对我来说,解决scheme是将Present Modally改变为Present Modally ,一切恢复正常。

Segue变化最奇怪的部分是, 我添加我的根视图是一个UIScrollView ,我的Show Detail segue模态地呈现下一个控制器。 然而, 我添加了根UIScrollViewShow Detail segue正在推进下一个控制器(这不是我想要的)。

为了解决这个问题,请确保在ViewController上取消选中此字段:

在ViewController >> Attibutes Inspector >>布局(未选中 – 调整滚动查看插图

示例图像

如果这还不够,请在TableView上试试这个,将Style设置为Plain

示例图像

这将解决您的问题

有一个类似的问题,甚至设置自动调整ScrollViewInsets为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; }