我的问题是:对于分组为UITableView
的iOS 7,表格顶部和第一个单元格之间存在间隙。
奇怪的是,当我第一次加载内容时,表格看起来就像在第一张图片中一样,但是当我向下滚动时,顶部和第一个单元格之间出现空格,就像在第二个单元格中一样:
使用style plain这种行为不会出现,但不幸的是我需要使用分组表视图。
关于?
的任何想法答案 0 :(得分:133)
只需在ViewDidLoad
方法
self.automaticallyAdjustsScrollViewInsets = NO;
答案 1 :(得分:37)
答案对我和我的团队来说非常有趣,像魅力一样工作
<强>原因:强>
我们观察到这只发生在视图层次结构中的第一个视图,如果第一个视图是UITableView 。 所以,除了第一个,所有其他类似的UITableViews都没有这个烦人的部分。 我们尝试将UITableView移出视图层次结构中的第一个位置,一切都按预期工作。
答案 2 :(得分:16)
通过在Storyboard中选择xib或控制器,转到View Controller的属性检查器。取消选中布局中的调整滚动视图插入。它将解决问题
答案 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;布局(未选中 - 调整滚动视图插入)
如果这还不够,请在TableView上尝试,将Style设置为 Plain :
这将解决您的问题
答案 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.1
,iOS9
和swift 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以模态方式呈现下一个控制器。然而在之后我添加了根UIScrollView
,Show 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;
}