gpt4 book ai didi

ios - 水平 ScrollView 滚动但仅部分滚动并弹回原始位置

转载 作者:行者123 更新时间:2023-11-28 23:30:46 25 4
gpt4 key购买 nike

我有一个水平 ScrollView ,内容如下:

enter image description here

当我运行时,它会部分水平滚动 - 我可以滚动直到看到大约一半的红色 View ,然后它会反弹回来。我怎样才能得到它,以便它可以一直滚动,以便所有红色 View 都可见,然后停留在那里?

我在 View Controller 中有这个,但是有没有都没有关系。

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("Content view bounds: \(contentView.bounds)")
scrollView.layoutIfNeeded()
scrollView.contentSize = contentView.bounds.size
}

在 Storyboard的屏幕截图中,红色 View 没有后缘约束,但是如果我在红色 View 和内容 View 之间添加一个约束,那么当我在设备上运行时它会停止滚动,看起来像这样:

enter image description here

最佳答案

您不需要一开始就显式设置 .contentSize —— 您可以让自动布局为您处理这一切。

首先,删除您的 Content View.width = width 约束:

enter image description here

让该约束告诉自动布局使您的 contentView 仅与 ScrollView 一样宽,因此您不会得到任何内容水平滚动。通过显式设置 .contentSize,您可以进行一些滚动,但您发现它没有给您想要的内容。

删除该约束后,从 Red View 添加一个 20 pt 的尾随约束到内容 View 的后缘:

enter image description here

现在,您拥有完整的水平约束链......

- Blue View.leading = leading + 20
- Blue View Width
- Red View.leading = Blue View.trailing + 40
- Red View Width
- trailing = Red View.trailing + 20

这满足自动布局并正确定义Content View的宽度...并且由于Content View被限制为 ScrollView 的前导和尾随,你得到正确的水平滚动。

不需要任何代码。

关于ios - 水平 ScrollView 滚动但仅部分滚动并弹回原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56601603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com