I’m trying to build a layout in swift using this idea: scroll -> uistackview (vertical) -> UIstackView (horizontal) -> UIstackview (vertical) [ view + n(UIStackview (horizontal)-> UIStackview (vertical) -> view + n Stackview ….)] i work until the second level but after that, all the views are displayed with frame 0 examples of implementation:
am I doing something wrong?
`
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let scroll = UIScrollView()
scroll.backgroundColor = .blue
view.addSubview(scroll)
scroll.translatesAutoresizingMaskIntoConstraints = false
scroll.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scroll.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
scroll.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
scroll.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
let stackV = UIStackView()
stackV.axis = .vertical
stackV.backgroundColor = .red
stackV.translatesAutoresizingMaskIntoConstraints = false
scroll.addSubview(stackV)
stackV.topAnchor.constraint(equalTo: scroll.topAnchor).isActive = true
stackV.bottomAnchor.constraint(equalTo: scroll.bottomAnchor).isActive = true
stackV.leadingAnchor.constraint(equalTo: scroll.leadingAnchor).isActive = true
stackV.trailingAnchor.constraint(equalTo: scroll.trailingAnchor).isActive = true
stackV.addArrangedSubview(UIView())
var stackH: UIStackView
for j in (0...3) {
stackH = UIStackView()
stackH.axis = .horizontal
stackH.backgroundColor = .green
stackH.translatesAutoresizingMaskIntoConstraints = false
stackV.addArrangedSubview(stackH)
stackH.leadingAnchor.constraint(equalTo: stackV.leadingAnchor).isActive = true
stackH.trailingAnchor.constraint(equalTo: stackV.trailingAnchor).isActive = true
var label: UILabel
var stackCol: UIStackView
for i in (0...3) {
stackCol = UIStackView()
stackCol.axis = .vertical
stackCol.backgroundColor = .cyan
stackCol.spacing = 4
stackCol.translatesAutoresizingMaskIntoConstraints = false
stackH.addArrangedSubview(stackCol)
stackH.addArrangedSubview(UIView())
stackCol.leadingAnchor.constraint(equalTo: stackH.leadingAnchor).isActive = true
stackCol.trailingAnchor.constraint(equalTo: stackH.trailingAnchor).isActive = true
label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "teste cacetas"
label.backgroundColor = .orange
label.heightAnchor.constraint(equalToConstant: 30).isActive = true
label.widthAnchor.constraint(equalToConstant: 30).isActive = true
stackCol.addArrangedSubview(label)
stackCol.addArrangedSubview(UIView())
label.leadingAnchor.constraint(equalTo: stackCol.leadingAnchor).isActive = true
label.trailingAnchor.constraint(equalTo: stackCol.trailingAnchor).isActive = true
stackCol.layoutIfNeeded()
}
}
}
}
`
I tried lots of different, constrains configurations but it not work
Matheus Cavalcante Teixeira is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.