我只是想创建添加5个视图,只与宽度和scrollView本身的高度分页启用UIScrollView。
我试图添加使用约束,但没有的UIView是appeard.似乎有一个issue与约束,我做了.你能帮我修复它.谢谢!
import UIKit
final class ViewController: UIViewController {
private lazy var scrollView: UIScrollView = {
let view = UIScrollView()
self.view.addSubview(view)
view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
view.leftAnchor.constraint(equalTo: self.view.leftAnchor),
view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
view.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 46),
view.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor)
])
view.bounces = true
view.showsHorizontalScrollIndicator = false
view.showsVerticalScrollIndicator = false
view.alwaysBounceHorizontal = true
view.alwaysBounceVertical = false
view.isPagingEnabled = true
view.backgroundColor = UIColor(red: 0.97, green: 0.97, blue: 0.97, alpha: 1.0)
return view
}()
let colors: [UIColor] = [.lightGray, .systemRed, .systemOrange, .systemBlue, .systemGreen]
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
var previousView: UIView!
for (i, color) in colors.enumerated() {
let view = UIView()
view.backgroundColor = color
view.tag = i + 1
scrollView.addSubview(view)
view.translatesAutoresizingMaskIntoConstraints = false
view.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
view.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
switch i {
case 0:
view.leftAnchor.constraint(equalTo: scrollView.leftAnchor).isActive = true
case colors.count - 1:
view.rightAnchor.constraint(equalTo: scrollView.rightAnchor).isActive = true
fallthrough
default:
view.leftAnchor.constraint(equalTo: previousView.rightAnchor).isActive = true
}
previousView = view
}
}
}
字符串
1条答案
按热度按时间js4nwp541#
您丢失了子视图的高度约束。在ScrollView中,始终为水平分页声明
equalHeight
,为垂直分页声明equalWidth
。字符串
注意:我更喜欢scrollView里面的stackView,横轴。你可以很容易地删除
switch case
,stackView会为你做的。