Swift5中如何添加ScrollView?

How to add Scroll View in Swift 5?

我想在我的项目中添加滚动视图,但是在 swift 5 我无法添加它我尝试了很多方法

@IBOutlet weak var scrollView: UIScrollView! 
@IBOutlet weak var imageViewBottomConstraint: NSLayoutConstraint!
@IBOutlet weak var imageViewLeadingConstraint: NSLayoutConstraint!
@IBOutlet weak var imageViewTopConstraint: NSLayoutConstraint!
@IBOutlet weak var imageViewTrailingConstraint: NSLayoutConstraint!

如果您首先使用界面构建器,请添加滚动视图并将滚动视图约束(顶部、底部、前导和尾随)设置为 (0,0,0,0)。视图层次结构必须像这样 view -> scroll view -> view(content view)。再次为您的内容视图添加约束。内容视图必须与父视图(滚动视图)具有相同的宽度和高度。在 Document Outline

中控制从内容视图到滚动视图的拖动

更多信息你可以看看这个https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithScrollViews.html

当我在属性中禁用内容布局指南时它 100% 有效

1.Add 故事板中的 scrollView(1),将需要的约束添加到 top/bottom/trailing/leading。

2.Then 在您的 scrollView 的大小检查器部分取消选中 "Content Layout Guides"。

3.Then 你需要在你的 scrollView 中放入新的 UIView(2),它的约束条件是 top/bottom/trailing/leading 到 superView(1) 并且宽度等于 superView(1)。

4.Then 您的视图 (2) 的高度,您可以将其添加为约束,或者您可以添加内容,这将为您的视图 (2) 提供高度。

高度设置示例

包含内容的示例,它为您的视图提供了高度(2)

您不需要取消选中内容布局指南(它可以帮助我们)。设置它实际上并不难。以下是使用 Xcode 11+ 并支持 iOS 11+

的方法

1 - 添加 ScrollView 并将与其父视图相关的顶部、底部、前导和尾随约束设置为 0

2 - 添加内容视图(任何 UIView),将连接拖到内容布局指南并将前导、顶部、尾随和底部约束设置为 0(确保将其设置为 0)

3 - 从您的内容视图拖动到框架布局指南并将其设置为等宽

4 - 向内容视图添加高度约束常量

您可以完全跳过约束。

  1. 将 ScrollView 添加到故事板。
  2. 在您的 ViewController 中创建一个 IBOutlet。
  3. 设置滚动视图的高度:scrollView.contentSize = (CGSize(width: desiredWidth, height: desiredHeight)

所需的宽度可以是数字或另一个视图的宽度。您可以通过为其创建 IBOutlet 以主视图的宽度为例:scrollView.contentSize = (CGSize(width: mainView.frame.size.width, height: desiredHeight)

所需的高度是滚动时完整显示内容所需的任何值。

我发现这种方式更容易理解和控制。