I am trying to create a Scroll View. The view itself is correctly displayed but it does not scroll, even though I added a view to it and set the content size.
注意:我没有使用 Storyboard ,而是仅使用约束 (AutoLayout)。
代码:
let scrollView: UIScrollView = {
let sv = UIScrollView()
sv.isScrollEnabled = true
sv.backgroundColor = .brown
return sv
}()
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
}
func setupViews() {
self.view.addSubview(scrollView)
scrollView.anchor(top: self.view.topAnchor, left: self.view.leftAnchor, bottom: self.view.bottomAnchor, right: self.view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
scrollView.contentSize = CGSize(width: self.view.frame.width, height: 2000)
print(scrollView.contentSize)
let view = UIView()
view.backgroundColor = .blue
scrollView.addSubview(view)
view.anchor(top: scrollView.topAnchor, left: scrollView.leftAnchor, bottom: scrollView.bottomAnchor, right: scrollView.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
}
.anchor() 是我制作的自定义扩展,目的是使约束 View 更容易。
如有任何帮助,我们将不胜感激。
最佳答案
最好不要将自动布局与框架布局混合使用
1- 评论
scrollView.contentSize = CGSize(width: self.view.frame.width, height: 2000)
2- 在 scrollview 内的 View 与 vc 的 View 之间设置等宽约束,高度约束为 2000
为了不和vc的view change混淆
let view = UIView()
到
let contentView = UIView()
然后添加这两个约束
contentView.widthAnchor.constraint(equalTo:self.view.widthAnchor).isActive = true
contentView.heightAnchor.constraint(equalToConstant:2000).isActive = true
关于ios - UIScrollView 不滚动 - 内容大小不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57030840/