使用自动布局时计算UIScrollView的contentSize

Mic*_*hel 17 uiscrollview ios autolayout swift

这是一个关于某些有用的东西的快速问题,但可以写得更好.我有一个UIScrollView和一个列在里面的对象,一个在另一个之下.一切都在期间完成,viewDidLoad()并且对象的放置使用Auto Layout.这是我将contentSize高度设置为UIScrollView适当值的方法.

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    globalView.contentSize = CGSize(width: globalView.frame.width,
                                    height: globalView.frame.height * 1.59)
}
Run Code Online (Sandbox Code Playgroud)

它有效,但任意值1.59显然是由我尝试了几个可能的值决定的.在这种情况下计算contentSize的正确方法是什么?我正在以编程方式做所有事情.搜索网并没有让我得到任何简单明了的答案,所以虽然这可能是一个有点重复的问题但我决定重新制定它.

Shr*_*t K 77

以编程方式提供内容大小并不是一种好方法.以下解决方案将使用autolayout工作,根本不需要设置内容大小.它将根据添加到视图的UI字段数进行计算.

步骤1 :

添加Scrollview以在故事板中查看并添加前导,尾随,顶部和底部约束(所有值均为零).

第2步 :

不要直接在scrollview上直接添加所需的视图,首先将一个视图添加到scrollview(这将是我们所有UI元素的内容视图).在此视图中添加以下约束.

1)前导,尾随,顶部和底部约束(所有值均为零).

2)向主视图添加相等的高度,相等的宽度(即包含scrollview).对于相等的高度,设置优先级为低.(这是设置内容大小的重要步骤).

3)此内容视图的高度将根据添加到视图的视图数量.假设你添加的最后一个视图是一个标签,他的Y位置是420,高度是20,那么你的内容视图将是440.

第3步:根据您的要求为您在内容视图中添加的所有视图添加约束.

以供参考 :

在此输入图像描述

在此输入图像描述

我希望这肯定会对你有所帮助.

  • 这听起来很有趣,但因为我没有使用故事板。在以编程方式工作时,我需要了解如何应用这些解释。第一个问题是,在第 2 步中,如何将视图设置为内容视图? (2认同)