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


69

在此处输入图片说明

在此处输入图片说明

我已关闭自动版式,并且viewcontroller嵌入在导航控制器中。我正在使用Xcode 5,情节提要。

我不明白为什么会在顶部留下空间。实际上,在情节提要中,我已将标签恰好放在导航栏下方。但是,当我在模拟器上运行它时,它从顶部开始留有空间。

解决此问题的一种骇人听闻的方式

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

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

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

Answers:


160

在Xcode 5中,在情节提要中选择控制器>在“属性检查器”中禁用Adjust Scroll View Insets还要检查是否设置了contentInset

编辑:我附加了图片

在此处输入图片说明


我可以告诉您在哪里检查contentInset,也可以尝试从上图禁用顶部栏和底部栏,检查是否已将delta设置为任何视图
Raheel Sadiq 2013年

谢谢。我一直在努力找出如此简单的东西。
jdmorgenstein 2014年

注意navigationController!.navigationBar.frame.heightUIApplication.sharedApplication().statusBarFrame.size.height。这些也可能导致UIScrollView.contentSize计算问题。
阿尔伯特·博里

1
则我的滚动视图不会滚动
Pravin Tate

是什么原因呢?
laltin

85

解决方法是在viewDidLoad之后实现以下代码行;

self.automaticallyAdjustsScrollViewInsets = NO;


适合我。谢谢
saintjab

谢谢您节省大量时间,我一无所知,为什么还有多余的空间。
Saleh Enam Shohag

37

iOS 11更新

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

谢谢,我不知道为什么我的填充错误。我在所有地方都自动尝试了AdjustScrollInsets,但是我在iOS 11上运行,因此为什么它不起作用
Daniel Jones


8

转到主故事板。选择视图控制器,请参阅属性检查器中的属性“调整滚动视图昆虫”。如果您不需要顶部间距。则取消选中“ Under Top Bars”。如果您不希望底部间距。则取消选中“底部底部条”。当我们使用与滚动视图相关的控制器时,就会出现这种问题。

导航和标签栏的功能是在控件等滚动视图中调整内容。


谢谢,它现在很简单
Tux Dawwas'Apr

4

对我来说,在xcode 7和Swift 2.x中,我使用一个for循环填充UIScrollView,并且必须将contentInset设置为零。

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

作品。谢谢webjunkie。
alsantos123

@ alsantos123我很高兴做到了!:)
webjunkie

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.