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

时间:2013-10-01 08:31:07

标签: ios uitableview ios7

我的问题是:对于分组为UITableView的iOS 7,表格顶部和第一个单元格之间存在间隙。

奇怪的是,当我第一次加载内容时,表格看起来就像在第一张图片中一样,但是当我向下滚动时,顶部和第一个单元格之间出现空格,就像在第二个单元格中一样:

enter image description here enter image description here

使用style plain这种行为不会出现,但不幸的是我需要使用分组表视图。

关于?

的任何想法

15 个答案:

答案 0 :(得分:133)

只需在ViewDidLoad方法

中添加此内容即可
self.automaticallyAdjustsScrollViewInsets = NO;

答案 1 :(得分:37)

答案对我和我的团队来说非常有趣,像魅力一样工作

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

<强>原因:

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

答案 2 :(得分:16)

通过在Storyboard中选择xib或控制器,转到View Controller的属性检查器。取消选中布局中的调整滚动视图插入。它将解决问题enter image description here

答案 3 :(得分:12)

如果您使用的是具有分组样式且只有1个组的UITableView,请使用简单样式来解决您的问题。

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

答案 4 :(得分:3)

分组类型tableView中对此问题的最简单解决方案是:

tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];

答案 5 :(得分:3)

要解决此问题,请确保在ViewController上取消选中此字段:

在ViewController上&gt;&gt; Attibutes Inspector&gt;&gt;布局(未选中 - 调整滚动视图插入

enter image description here

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

Example image

这将解决您的问题

答案 6 :(得分:2)

家伙! 我有同样的问题。 TableView出现在导航栏和第一个单元格之间的可用空间。 这段代码救了我:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return 10;
    }
    else return 2;
}

答案 7 :(得分:1)

UITableView本身上方以及单元格之间有一个空格。 在上面的两个不同答案中找到了我的解决方案。再次发布它,以便没有人错过这两个解决方案。

这从上面移除了空间:

self.automaticallyAdjustsScrollViewInsets = NO;

并删除了单元格下方的空格: 设置&#39;样式&#39; UITableView的属性为&#39; Plain&#39;

答案 8 :(得分:1)

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

只需在ViewDidLoad方法

中添加此内容即可
self.automaticallyAdjustsScrollViewInsets = false;

答案 9 :(得分:0)

从iOS 7开始,您会自动获得一个组头和一些空格。将您的应用与“设置”应用进行比较,您会看到。您可以通过告诉UITableView将标题高度设置得尽可能小来解决它。请参阅How to hide first group header

答案 10 :(得分:0)

我意识到很久以前就已经回答了这个问题,但对于遇到类似情况的其他人,我会分享最终为我工作的内容:

如果您正在使用xib,请选择顶级视图并设置“状态栏”&#39;没有&#39;没有&#39;在“属性”检查器的“模拟指标”区域中。修正了我的间距问题。

答案 11 :(得分:0)

对我而言,这没有工作

self.automaticallyAdjustsScrollViewInsets = NO;

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

对我有用的是进入我的故事板,并调整我的tableView。看来我的tableView在顶部有一个20px的间隙以允许statusBar。我缩放它,一切都完美排列。

答案 12 :(得分:0)

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

在我的导航堆栈中添加UIScrollView作为我的第一个控制器的根视图后,如果我将下一个控制器显示为Show Detail segue,我的下一个控制器将在其表格上方留出空格图。

我的解决方案是将segue更改为Present Modally,一切都恢复正常。

segue改变中最奇怪的部分是之前我将我的根视图添加为UIScrollView,我的Show Detail segue以模态方式呈现下一个控制器。然而之后我添加了根UIScrollViewShow Detail segue 推送在下一个控制器上(这不是我想要的)。

答案 13 :(得分:0)

有一个类似的问题,甚至设置自动将AdjustsScrollViewInsets设置为NO。这解决了我:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
    return CGFLOAT_MIN;
}

答案 14 :(得分:-2)

In the UIViewController.h iOS9 SDK have a method:

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES

is not a property, so

self.automaticallyAdjustsScrollViewInsets = NO; 

should be

-(BOOL)automaticallyAdjustsScrollViewInsets{   
     return NO;
}