ios – UIScrollView – 需要x位置/宽度的约束,需要y位置/高度的约束

我有一个看起来像这样的视图层次结构(基于其他答案和Apple的高级AutoLayout指南,用于使用UIScrollView):

ScrollView所需的两个步骤是:

>设置ScrollView的位置和大小(框架)约束:与使用任何其他视图一样.
>设置内容大小的约束:通过确保ScrollView的子视图中的约束触及ScrollView的所有边(前导,尾随,顶部,底部),如果您在界面构建器中执行此操作而不是以编程方式执行此操作.

第一步工作正常,这是结果:

没有预期的位置和大小问题.我现在只需要在Interface Builder中使用步骤2定义内容大小(内容高度和内容宽度).

现在我添加触摸ScrollView的所有4个边缘的约束,如下所示:

突然,ScrollView不再知道它的位置和大小(框架)了.

我查看了其他答案,并按照各个步骤进行操作,但似乎无法解决此问题.抱歉,由于隐私问题,我无法发布Storyboard屏幕截图

解决方法

滚动视图一开始可能有点棘手.你真的有3个部分:

>滚动视图的实际框架
>滚动视图中包含的子视图的实际框架
>滚动视图的contentSize – 即它应向两个方向滚动的距离

所以,1.非常简单.

第二部分似乎也是直截了当的,除了我们倾向于将子视图“固定”到他们的超视图的内边缘.在滚动视图子视图的情况下,这些约束是定义contentSize的约束.您还必须确保子视图具有“大小”.

从一个子视图开始,您将:

>将滚动视图的约束设置为“正常”.
>设置子视图的大小 – 仅用于演示目的,将其设置为100 x 100
>将子视图的所有四个边都固定到滚动视图的四个边

运行该应用程序.假设您设置了背景颜色以便知道您正在查看的内容,您应该看到滚动视图的位置和大小正如您所期望的那样……您应该看到100 x 100的子视图位于滚动视图内的某个位置…并且您可能无法进行任何实际滚动.

如果您返回并将子视图更改为100 x 800,并且仍然将其底部约束固定到滚动视图的底部(子视图的超级视图),然后再次运行应用程序…您应该能够滚动向上和向下观察子视图的全部800点高度.

思考它的方法是:滚动视图的内容 – 无论是一个还是多个子视图 – 必须定义自己的大小,这将定义可滚动区域(滚动视图的contentSize).

希望有道理!

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...