我正在尝试创建滚动视图。视图本身正确 显示但它没有滚动,即使我向其添加了视图并且 设置内容大小。
注意:我不使用情节提要,而是仅使用约束(自动布局(。
法典:
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(( 是我做的一个自定义扩展,以便更轻松地约束视图。
任何帮助将不胜感激。
最好不要将自动布局与框架布局混合使用
1-评论
scrollView.contentSize = CGSize(width: self.view.frame.width, height: 2000)
2-在滚动视图内的视图与VC视图之间设置等宽约束,高度约束为2000
不要与VC的观点变化混淆
let view = UIView()
自
let contentView = UIView()
然后添加这 2 个
contentView.widthAnchor.constraint(equalTo:self.view.widthAnchor).isActive = true
contentView.heightAnchor.constraint(equalToConstant:2000).isActive = true