我遇到了一个奇怪的问题,当我将它添加为 scrollView 的子视图时,子视图的宽度始终为 0,但是当我给子视图指定一个特定的数字时它会起作用,例如
make.width.equalTo(200)
.
我想知道是不是因为scrollView无法获得正确的宽度,但我检查了它显示宽度的屏幕层次结构是393。为什么子视图突然无法获得正确的宽度。
这是我的演示:
class ViewController: UIViewController {
private lazy var scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.delegate = self
scrollView.alwaysBounceVertical = true
scrollView.contentInsetAdjustmentBehavior = .always
scrollView.backgroundColor = .white
return scrollView
}()
private lazy var viewOne: UIView = {
let view = UIView()
view.backgroundColor = .blue
return view
}()
private lazy var viewTwo: UIView = {
let view = UIView()
view.backgroundColor = .yellow
view.alpha = 0.5
return view
}()
private lazy var viewThree: UIView = {
let view = UIView()
view.backgroundColor = .red
view.alpha = 0.5
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setupUI()
}
private func setupUI() {
view.backgroundColor = .white
view.addSubview(scrollView)
scrollView.addSubview(viewOne)
viewOne.backgroundColor = .blue
scrollView.addSubview(viewTwo)
scrollView.addSubview(viewThree)
scrollView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
viewOne.snp.makeConstraints { make in
make.top.equalToSuperview()
make.left.right.equalToSuperview()
make.height.equalTo(200)
}
viewTwo.snp.makeConstraints { make in
make.top.equalTo(viewOne.snp.bottom).offset(12)
make.left.right.equalToSuperview()
make.height.equalTo(200)
}
viewThree.snp.makeConstraints { make in
make.top.equalTo(viewTwo.snp.bottom).offset(12)
make.left.right.equalToSuperview()
make.height.equalTo(200)
make.bottom.equalToSuperview()
}
}
}
extension ViewController: UIScrollViewDelegate {
}