在使用子视图复制视图时引用此问题UiView 和所有子视图的副本。复制的 UIButton 无法按下
在上面的链接中,可以复制视图及其所有子视图,但是,我未能成功创建一个可以创建尽可能多或尽可能少视图的循环。
我尝试将视图添加到滚动视图内的堆栈视图中,以便在需要许多视图时可以向下滚动:
var numOfViewsNeeded = 5
func createPart() -> UIView {
let part = UIView()
part.translatesAutoresizingMaskIntoConstraints = false
part.layer.cornerRadius = 4
part.layer.masksToBounds = true
part.backgroundColor = .random()
part.heightAnchor.constraint(equalToConstant: 300).isActive = true
let partLabel1 = UILabel(frame: CGRect(x:10, y: 0, width: 300, height: 50))
let partLabel2 = UILabel(frame: CGRect(x:10, y: 35, width: 300, height: 50))
let partLabel3 = UILabel(frame: CGRect(x:10, y: 75, width: 300, height: 50))
let partLabel4 = UILabel(frame: CGRect(x:10, y: 115, width: 300, height: 50))
let partLabel5 = UILabel(frame: CGRect(x:10, y: 155, width: 300, height: 50))
let partLabel6 = UILabel(frame: CGRect(x:10, y: 195, width: 300, height: 50))
partLabel1.text = "NO."
partLabel1.textColor = .white
partLabel2.text = "Code"
partLabel2.textColor = .white
partLabel3.text = "Br"
partLabel3.textColor = .white
partLabel4.text = "Stat"
partLabel4.textColor = .white
partLabel5.text = "Line"
partLabel5.textColor = .white
partLabel6.text = "B"
partLabel6.textColor = .white
part.addSubview(partLabel1)
part.addSubview(partLabel2)
part.addSubview(partLabel3)
part.addSubview(partLabel4)
part.addSubview(partLabel5)
part.addSubview(partLabel6)
part.layer.zPosition = -1]
return part
}
override func viewDidLoad() {
super.viewDidLoad()
let part = createPart()
for i in 0..<numOfViewsNeeded {
view.addSubview(part)
stackView.addArrangedSubview(part)
}
contentView.topAnchor.constraint(equalTo: self.containerScrollView.topAnchor, constant: 0).isActive = true
contentView.leadingAnchor.constraint(equalTo: self.containerScrollView.leadingAnchor, constant: 0).isActive = true
contentView.trailingAnchor.constraint(equalTo:self.containerScrollView.trailingAnchor, constant: 0).isActive = true
contentView.bottomAnchor.constraint(equalTo: self.containerScrollView.bottomAnchor, constant: 0).isActive = true
contentView.widthAnchor.constraint(equalTo:self.view.widthAnchor, constant: 0).isActive = true
containerScrollView.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
containerScrollView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 0).isActive = true
containerScrollView.trailingAnchor.constraint(equalTo:self.view.trailingAnchor, constant: 0).isActive = true
containerScrollView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
stackMainView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 50).isActive = true
stackMainView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 8).isActive = true
stackMainView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor, constant: -8).isActive = true
//stackMainView.heightAnchor.constraint(equalToConstant: CGFloat(self.heighOfStack)).isActive = true
stackMainView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant: -30).isActive = true
}
var containerScrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.backgroundColor = .white
scrollView.isScrollEnabled = true
return scrollView
}()
var contentView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = UIColor.white
return view
}()
let stackMainView: UIStackView = {
let stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.backgroundColor = .random()
return stackView
}()
这种“动态地”一遍又一遍地创建相同视图的过程是否可能?
对此的任何帮助将不胜感激!