为什么在iOS 6和iOS 7中UIScrollView会从顶部留出空间?

70

输入图像说明

输入图像说明

我已经关闭了自动布局(Autolayout),并且视图控制器(viewcontroller)嵌入导航控制器(navigation controller)中。 我正在使用 Xcode 5 和 Storyboard。 我不明白为什么它会从顶部留出空间。 实际上,在storyboard中,我将标签正好放在导航栏下方。 但是当我在模拟器上运行时,它会从顶部留出空间。 解决这个问题的其中一种方法是:

-(void)viewWillLayoutSubviews
{
   self.scrollViewMain.frame = CGRectMake(0, -70, 320, 800);

   self.scrollViewMain.contentSize = CGSizeMake(320, 800);
}

但是我是否错过了一些非常简单的方法。

7个回答

159
在Xcode 5中,选择你的控制器 > 在属性检查器中禁用调整滚动视图插图。 同时检查是否设置了任何contentInset。 编辑: 我附上了一张图片。

我可以告诉你在哪里检查。检查contentInset,还尝试从上面的图片中禁用顶部栏和底部栏,检查是否已将增量设置为任何视图。 - Raheel Sadiq
1
然后我的滚动视图无法滚动。 - Pravin Tate
那是什么原因? - laltin
https://dev59.com/DWAf5IYBdhLWcg3wZSBI - Jayesh Miruliya
这是我感到遗憾只能给一个大拇指的时刻 :) 感谢帮助! - VsMaX
显示剩余4条评论

85
解决方法是在viewDidLoad中加入以下代码:

self.automaticallyAdjustsScrollViewInsets = NO;

该代码可以去除自动调整滚动视图的内边距,以解决相关的技术问题。

非常适合我。谢谢。 - saintjab
谢谢你节省了很多时间,我完全不知道为什么会有额外的空格。 - Saleh Enam Shohag

40

iOS 11更新

if #available(iOS 11.0, *) {
    scrollView.contentInsetAdjustmentBehavior = .never
} else {
    automaticallyAdjustsScrollViewInsets = false
}

谢谢,我一直搞不清楚为什么我的填充不对。我尝试在各个地方使用automaticallyAdjustScrollInsets,但是我使用的是iOS 11,所以它没有起作用。 - Daniel Jones
2
我今天尝试了这个 - 2021年3月22日,应该将其标记为正确答案。 - Vijayendra

11

检查员:选择scrollView并设置内容插图 - 绝不

在此输入图片描述


谢谢!最简单的解决方案。 - Andrew

8
前往主故事板。 选择视图控制器,查看属性检查器中的“调整滚动视图蜱虫”属性。 如果您不想要顶部间距,请取消选中“在顶部栏下方”。如果您不想要底部间距,请取消选中“在底部栏下方”。当我们使用与滚动视图相关的控制器时,就会出现这种问题。
这是一种用于导航和标签栏的功能,可以调整滚动视图中的内容,如控件。

谢谢,现在很简单了。 - Tux Dawwas

4

在Xcode 7和Swift 2.x中,我用for循环填充UIScrollView,并需要将contentInset设置为零。

for image in images {
  self.scrollView.contentInset = UIEdgeInsetsZero
}

工作正常。感谢 webjunkie。 - alsantos123
@alsantos123 我很高兴它做到了! :) - webjunkie

0
在你的 StoryBoard 中,选择 ContentInsets 为 never:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接