为什么我的垂直编程滚动视图在 Swift 中不起作用



我创建了一个测试项目,看看我是否可以快速编程滚动视图,但我无法滚动测试数据。这是我的测试代码。

import UIKit
class ViewController: UIViewController {
private let viewLabel0: UILabel = {
let label = UILabel()
label.text = "Stephen 0"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()

private let viewLabel1: UILabel = {
let label = UILabel()
label.text = "Stephen 1"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel2: UILabel = {
let label = UILabel()
label.text = "Stephen 2"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel3: UILabel = {
let label = UILabel()
label.text = "Stephen 3"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel4: UILabel = {
let label = UILabel()
label.text = "Stephen 4"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()

private let viewLabel5: UILabel = {
let label = UILabel()
label.text = "Stephen 5"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel6: UILabel = {
let label = UILabel()
label.text = "Stephen 6"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()

private let viewLabel7: UILabel = {
let label = UILabel()
label.text = "Stephen 7"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel8: UILabel = {
let label = UILabel()
label.text = "Stephen 8"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel9: UILabel = {
let label = UILabel()
label.text = "Stephen 9"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel10: UILabel = {
let label = UILabel()
label.text = "Stephen 10"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()

private let viewLabel11: UILabel = {
let label = UILabel()
label.text = "Stephen 11"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel12: UILabel = {
let label = UILabel()
label.text = "Stephen 12"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()
private let viewLabel13: UILabel = {
let label = UILabel()
label.text = "Stephen 13"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()

private let viewLabel14: UILabel = {
let label = UILabel()
label.text = "Stephen 14"
label.font = UIFont.systemFont(ofSize: 30)
label.textColor = .white
return label
}()

private lazy var scrollView: UIScrollView = {
let sv = UIScrollView()
sv.isScrollEnabled = true
sv.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height * 3.0)
return sv
}()

private let contentView: UIView = {
let cv = UIView()
return cv
}()

override func viewDidLoad() {
super.viewDidLoad()

view.backgroundColor = UIColor.mainBackgroundColor

view.addSubview(scrollView)
scrollView.anchor(top: view.topAnchor,
left: view.leftAnchor,
bottom: view.bottomAnchor,
right: view.rightAnchor)

scrollView.addSubview(contentView)
contentView.anchor(top: scrollView.contentLayoutGuide.topAnchor,
left: scrollView.frameLayoutGuide.leftAnchor,
bottom: scrollView.contentLayoutGuide.bottomAnchor,
right: scrollView.frameLayoutGuide.rightAnchor,
paddingTop: 0,
paddingLeft: 0,
paddingBottom: 0,
paddingRight: 0)

contentView.addSubview(viewLabel0)
viewLabel0.anchor(top: view.safeAreaLayoutGuide.topAnchor, paddingTop: 40.0)
viewLabel0.centerX(inView: contentView)
contentView.addSubview(viewLabel1)
viewLabel1.anchor(top: viewLabel0.bottomAnchor, paddingTop: 40.0)
viewLabel1.centerX(inView: contentView)
contentView.addSubview(viewLabel2)
viewLabel2.anchor(top: viewLabel1.bottomAnchor, paddingTop: 40.0)
viewLabel2.centerX(inView: contentView)
contentView.addSubview(viewLabel3)
viewLabel3.anchor(top: viewLabel2.bottomAnchor, paddingTop: 40.0)
viewLabel3.centerX(inView: contentView)
contentView.addSubview(viewLabel4)
viewLabel4.anchor(top: viewLabel3.bottomAnchor, paddingTop: 40.0)
viewLabel4.centerX(inView: contentView)
contentView.addSubview(viewLabel5)
viewLabel5.anchor(top: viewLabel4.bottomAnchor, paddingTop: 40.0)
viewLabel5.centerX(inView: contentView)
contentView.addSubview(viewLabel6)
viewLabel6.anchor(top: viewLabel5.bottomAnchor, paddingTop: 40.0)
viewLabel6.centerX(inView: contentView)
contentView.addSubview(viewLabel7)
viewLabel7.anchor(top: viewLabel6.bottomAnchor, paddingTop: 40.0)
viewLabel7.centerX(inView: contentView)
contentView.addSubview(viewLabel8)
viewLabel8.anchor(top: viewLabel7.bottomAnchor, paddingTop: 40.0)
viewLabel8.centerX(inView: contentView)
contentView.addSubview(viewLabel9)
viewLabel9.anchor(top: viewLabel8.bottomAnchor, paddingTop: 40.0)
viewLabel9.centerX(inView: contentView)
contentView.addSubview(viewLabel10)
viewLabel10.anchor(top: viewLabel9.bottomAnchor, paddingTop: 40.0)
viewLabel10.centerX(inView: contentView)
contentView.addSubview(viewLabel11)
viewLabel11.anchor(top: viewLabel10.bottomAnchor, paddingTop: 40.0)
viewLabel11.centerX(inView: contentView)
contentView.addSubview(viewLabel12)
viewLabel12.anchor(top: viewLabel11.bottomAnchor, paddingTop: 40.0)
viewLabel12.centerX(inView: contentView)
contentView.addSubview(viewLabel13)
viewLabel13.anchor(top: viewLabel12.bottomAnchor, paddingTop: 40.0)
viewLabel13.centerX(inView: contentView)
contentView.addSubview(viewLabel14)
viewLabel14.anchor(top: viewLabel13.bottomAnchor, paddingTop: 40.0)
viewLabel14.centerX(inView: contentView)



}

}

我觉得我已经尝试了从查找堆栈溢出到在线搜索的所有方法,但我根本无法滚动我创建的标签列表。

首先,您不能在viewDidLoad中设置视图属性,因为在这种方法中,视图加载时不会出现,请尝试在viewDidAppear中放入相同的代码,并检查滚动视图的内容大小属性,它应该与您的滚动内容大小相匹配,并且应该大于您的滚动视图大小,并且保持滚动对滚动视图启用true。

第二件事是最好从你的故事板上取下卷轴。

参考链接实现,我在谷歌上搜索你也可以尝试其他链接。

https://medium.com/@pradeep_chauhan/如何配置-a-uiscrollview-with-auto-layout-interface-builder-218dcb4022d7

需要以下代码

view.addSubview(scrollView)
scrollView.anchor(top: self.view.topAnchor,
bottom: self.view.bottomAnchor,
paddingTop: 0,
paddingBottom: 0)
scrollView.trail(left: self.view.leadingAnchor,
right: self.view.trailingAnchor,
leftT: 0,
rightT: 0)

scrollView.addSubview(contentView)
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true;
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true;
contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true;
contentView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true;

最新更新