【发布时间】:2021-06-15 05:12:13
【问题描述】:
我在代码中创建了一个 scrollView 并为其添加了几个标签:
private let scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.backgroundColor = .systemTeal
return scrollView
}()
在 viewDidLoad 中:
view.addSubview(scrollView)
[view1, label1, label2, label3, label4, label5].forEach { scrollView.addSubview($0) }
setViewContraints()
然后在viewDidLayoutSubviews中:
override func viewDidLayoutSubviews() {
scrollView.frame = view.bounds
scrollView.contentSize = CGSize(width: view.width, height: view.height + 300)
}
第一个view锚定到scrollview safeAreaLayoutGuide topAnchor,然后每个后续标签的topAnchor都锚定到前一个bottomAnchor的底部。每个视图的尾随和前导锚点都锚定到滚动视图的尾随和前导锚点。这是在 setViewConstraints() 中完成的。
view.width 和 view.height 分别返回 view.frame.size.width 和 view.frame.size.height。
所有内容看起来都很好,但滚动视图不起作用。我做错了什么?
【问题讨论】:
-
滚动视图子视图应限制在滚动视图的
.contentLayoutGuide。如果您的约束设置正确,您应该不设置.contentSize。显示您的setViewContraints()代码。 -
@DonMag 是的,我最终删除了 contentSize。问题是我没有将最后一个视图的底部锚定锚定到滚动视图的底部锚点。
标签: ios swift uiscrollview