Scrollview带导航栏+自动布局

时间:2016-01-07 19:52:01

标签: ios objective-c xcode uiscrollview autolayout

我在NavigationController中嵌入了一个ViewController。我在其中放置了ScrollView,然后是覆盖整个区域的内容视图(设置ScrollView的内容大小)和一些标签。我试图为所有控件设置约束但是我失败了。

这就是它在Xcode中的样子:

Xcode view

这是在模拟器中:

Simulator view

红色是滚动视图,绿色 - 内容视图。当然,我可以滚动视图以获得屏幕上的底部标签。

我做错了什么?有什么限制?我当然希望ScrollView能够覆盖窗口的整个可用区域(从导航栏底部到屏幕底部)。

如需完整参考,您可以download the project

4 个答案:

答案 0 :(得分:5)

斯威夫特3:

self.automaticallyAdjustsScrollViewInsets = false

答案 1 :(得分:3)

我认为您看到的差距是由导航栏引起的。间隙大小为64,这是导航栏+状态栏(44 + 20)的大小。您需要将滚动条约束到顶部布局指南。通过推动此64负面。所以你的scrollview top constriant将是-64。

也可以通过点击xcode中尺寸检查器中的位置视图按钮,一键完成。

单击位置视图并选择垂直填充容器。这会将scrollview限制为顶部布局指南。现在选择scrollview并单击storyboard中的更新约束。

enter image description here

正如您所看到的,contentView不会像滚动视图一样覆盖视图,内容视图的按钮上有空格,当视图加载时,导航栏将占用额外的空间,内容视图将正好在你需要的地方。

答案 2 :(得分:3)

这是关于scrollView和Auto Layout的精彩教程。在找到本教程之前,我花了很多时间处理同样的问题。 http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

方法是将滚动视图和内容视图拖动到所有区域,就像没有提供导航栏一样。也做出正确的约束。

答案 3 :(得分:0)

swift 3代码可以工作,但界面构建器正在尝试补偿导航栏,因此在添加视图时忽略该栏并将视图放在其上。国际文凭组织将予以赔偿。

相关问题