我在NavigationController中嵌入了一个ViewController。我在其中放置了ScrollView,然后是覆盖整个区域的内容视图(设置ScrollView的内容大小)和一些标签。我试图为所有控件设置约束但是我失败了。
这就是它在Xcode中的样子:
这是在模拟器中:
红色是滚动视图,绿色 - 内容视图。当然,我可以滚动视图以获得屏幕上的底部标签。
我做错了什么?有什么限制?我当然希望ScrollView能够覆盖窗口的整个可用区域(从导航栏底部到屏幕底部)。
如需完整参考,您可以download the project。
答案 0 :(得分:5)
斯威夫特3:
self.automaticallyAdjustsScrollViewInsets = false
答案 1 :(得分:3)
我认为您看到的差距是由导航栏引起的。间隙大小为64,这是导航栏+状态栏(44 + 20)的大小。您需要将滚动条约束到顶部布局指南。通过推动此64负面。所以你的scrollview top constriant将是-64。
也可以通过点击xcode中尺寸检查器中的位置视图按钮,一键完成。
单击位置视图并选择垂直填充容器。这会将scrollview限制为顶部布局指南。现在选择scrollview并单击storyboard中的更新约束。
正如您所看到的,contentView不会像滚动视图一样覆盖视图,内容视图的按钮上有空格,当视图加载时,导航栏将占用额外的空间,内容视图将正好在你需要的地方。
答案 2 :(得分:3)
这是关于scrollView和Auto Layout的精彩教程。在找到本教程之前,我花了很多时间处理同样的问题。 http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/。
方法是将滚动视图和内容视图拖动到所有区域,就像没有提供导航栏一样。也做出正确的约束。
答案 3 :(得分:0)
swift 3代码可以工作,但界面构建器正在尝试补偿导航栏,因此在添加视图时忽略该栏并将视图放在其上。国际文凭组织将予以赔偿。