如何使用自动布局来设置 UIScrollview 的约束?

2023-12-05

我花了两天时间尝试了各种解决方案混合和纯自动布局方法实现自动布局之前的一个简单的滚动视图设置,现在它是官方的 - 我一定是太愚蠢了。我主要在故事板中进行设置(嗯,就是这样)。

所以这是我的求助请求。

视图树:

UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton

这些按钮应该水平滚动(从左到右,反之亦然)。有人可以吗please让我知道如何设置约束以使用纯自动布局实现此目的???

--

我尝试过混合方法,如下所示:

UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton

...并设置固定的宽度和高度约束contentviewtranslatesAutoresizingMaskIntoConstraints根据 Apple 的技术说明进行设置。按钮和滚动视图是使用约束设置的。这使得滚动视图滚动(是的),但是可惜,它滚动得太远了!据我所知,滚动宽度在某种程度上是我设置内容视图的两倍???!!!???

我也尝试了纯自动布局方法,都使用contentview和没有。All意见是translatesAutoresizingMaskIntoConstraints=NO, 除了self.view。这些按钮具有固定的宽度/高度约束,并固定到滚动视图的所有四个边缘。没有任何滚动。

所以我完全困惑为什么我不能让它正常工作。非常感谢任何帮助,如果您需要任何其他信息,请询问!

更新了屏幕截图和解决方案 -按钮Z约束:

enter image description here

编辑@杰米·福雷斯特因此,解决方案是最后一个按钮上的错误尾随约束。我设置的值不是 6441,而是负数 -6441。棘手的是,在 Storyboard 中设置值时,Pin 工具栏中有两个选项:

enter image description here

当前画布值为负(导致不滚动),下面的选项为正(激活滚动)。这意味着我并不愚蠢,但我猜至少是半盲的。尽管如此,我要辩解一下,XCode 没有显示“不正确”设置的错误,这不是有点令人不安吗?

再次编辑现在这很有趣......将尾随值从 -6441(无滚动)更改为 6441 启用滚动。但我的老朋友“内容大小太多”又回来了,导致内容大小是应有大小的两倍!获得正确内容滚动的解决方案是将尾随约束设置为零!这在 Storyboard 中工作时并不明显,但看看 @Infinity James 的代码,它应该是这样的。


当您将约束粘贴到此处时,很难看到约束的确切值和设置,因此通过查看您的屏幕截图,我不确定您哪里出了问题。

我创建了一个基本的设置来代替解释您的设置中的错误示例项目具有与您描述的非常相似的视图层次结构和约束设置。水平滚动在示例项目中按预期工作,该项目使用 Apple 在技术说明.

我最初在使用自动布局时也遇到了很多麻烦UIScrollView。让它工作的关键是确保滚动视图中的所有项目加在一起都具有约束,这些约束最终链接到滚动视图的所有侧面,并有助于自动布局系统能够确定滚动视图的 contentSize滚动视图将大于其框架。看起来您试图在代码中执行此操作,但也许您有一些多余的约束,导致 contentSize 太小。

另外值得注意的是,正如其他人提到的,使用 AutoLayout 和 UIScrollview,您不再显式设置 contentSize。自动布局系统根据您的约束计算 contentSize。

我还发现本电子书章节对让我理解这一切是如何运作的非常有帮助。希望这一切有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用自动布局来设置 UIScrollview 的约束? 的相关文章

随机推荐