Scrollview带导航栏+自动布局

bpi*_*iec 8 xcode objective-c uiscrollview ios autolayout

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

这是它在Xcode中的样子:

Xcode视图

这是在模拟器中:

模拟器视图

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

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

如需完整参考,您可以下载该项目.

小智 6

斯威夫特3:

self.automaticallyAdjustsScrollViewInsets = false
Run Code Online (Sandbox Code Playgroud)


Tej*_*uri 3

我认为您看到的间隙是由导航栏造成的。间隙的大小为 64,即导航栏 + 状态栏的大小 (44+20)。您需要将滚动条限制在顶部布局指南。通过负向推动此 64。所以你的滚动视图顶部约束将为-64。

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

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

在此输入图像描述

正如你所看到的, contentView 并不像scrollview 那样被限制为覆盖视图,内容视图的按钮处有空间,当视图加载时,导航栏将占据额外的空间,并且 contentview 将恰好位于你需要的地方。