I am trying to put two UIViews inside a horizontal UIStackview. Inside the UIViews are Vertical UIStackviews to space the text (See picture for example). The vertical stackviews in the UIView is working. When I try to add the two UIViews to the horizontal stackview the UIViews are getting overlapped and I cant seem to space them properly. How can I space it like the example. I can't see the problem in the constraints. I tried a lot of different solutions but I cant figure it out.
Declarations
private let horizontalStackview: UIStackView = {
let horizontalStackview = UIStackView()
horizontalStackview.distribution = .fillEqually
horizontalStackview.axis = .horizontal
horizontalStackview.spacing = 200
uhorizontalStackview.translatesAutoresizingMaskIntoConstraints = false
return horizontalStackview
}()
private let verticalFirstUIView: UIView = {
let verticalFirstUIView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 80))
verticalFirstUIView.backgroundColor = .white
verticalFirstUIView.layer.borderWidth = 2
verticalFirstUIView.layer.borderColor = UIColor.gray.cgColor
verticalFirstUIView.translatesAutoresizingMaskIntoConstraints = false
return verticalFirstUIView
}()
private let verticalSecondUIView: UIView = {
let verticalSecondUIView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 80))
verticalSecondUIView.backgroundColor = .white
verticalSecondUIView.layer.borderWidth = 2
verticalSecondUIViewlayer.borderColor = UIColor.blue.cgColor
verticalSecondUIView.translatesAutoresizingMaskIntoConstraints = false
return verticalSecondUIView
}()
private let verticalFirstStackView: UIStackView = {
let verticalFirstStackView = UIStackView()
verticalFirstStackView.axis = .vertical
verticalFirstStackView.alignment = .center
verticalFirstStackViewdistribution = .fillEqually
verticalFirstStackViewspacing = 5
verticalFirstStackView.translatesAutoresizingMaskIntoConstraints = false
return verticalFirstStackView
}()
private let verticalSecondStackView: UIStackView = {
let verticalSecondStackView = UIStackView()
verticalSecondStackView.axis = .vertical
verticalSecondStackView.alignment = .center
verticalSecondStackViewdistribution = .fillEqually
verticalSecondStackView.spacing = 5
verticalSecondStackView.translatesAutoresizingMaskIntoConstraints = false
return verticalSecondStackView
}()
Functions with constraints
func setupHorizontalStackview(){
view.addSubview(horizontalStackview)
horizontalStackview.addArrangedSubview(verticalFirstUIView)
horizontalStackview.addArrangedSubview(verticalSecondUIView)
NSLayoutConstraint.activate([
horizontalStackview.topAnchor.constraint(equalTo: labelAboveHorizontalStackView.bottomAnchor, constant: 10),
horizontalStackview.widthAnchor.constraint(equalToConstant: horizontalStackview.frame.width)
])
}
func setupVerticalFirstUIView(){
view.addSubview(verticalFirstUIView)
userSavedUIView.addSubview(verticalFirstStackView)
NSLayoutConstraint.activate([ verticalFirstUIView.topAnchor.constraint(equalTo: horizontalStackview.topAnchor),
verticalFirstUIView.widthAnchor.constraint(equalToConstant: verticalFirstUIView.frame.width)
])
}
func setupVerticalSecondUIView(){
view.addSubview(verticalSecondUIView)
verticalSecondUIView.addSubview(verticalSecondStackView)
NSLayoutConstraint.activate([
verticalSecondUIView.topAnchor.constraint(equalTo: horizontalStackview.topAnchor),
verticalSecondUIView.widthAnchor.constraint(equalToConstant: verticalSecondUIView.frame.width)
])
}
func setupverticalFirstStackView(){
view.addSubview(verticalFirstStackView)
NSLayoutConstraint.activate([
verticalFirstStackView.leadingAnchor.constraint(equalTo: verticalFirstUIView.leadingAnchor, constant: 15),
verticalFirstStackView.trailingAnchor.constraint(equalTo: verticalFirstUIView.trailingAnchor, constant: -15),
verticalFirstStackView.topAnchor.constraint(equalTo: verticalFirstUIView.topAnchor, constant: 15),
verticalFirstStackView.bottomAnchor.constraint(equalTo: verticalFirstUIView.bottomAnchor),
])
let ulText = UILabel()
let ulTextTwo = UILabel()
let ulTextThree = UILabel()
ulText.text = "text”
ulTextTwo.text = "text2”
ulTextThree.text = "text3”
verticalFirstStackView.addArrangedSubview(ulText)
verticalFirstStackView.addArrangedSubview(ulTextTwo)
verticalFirstStackView.addArrangedSubview(ulTextThree)
}
func setupverticalSecondStackView(){
view.addSubview(verticalSecondStackView)
NSLayoutConstraint.activate([
verticalSecondStackView.leadingAnchor.constraint(equalTo: verticalSecondUIView.leadingAnchor, constant: 15),
verticalSecondStackView.trailingAnchor.constraint(equalTo: verticalSecondUIView.trailingAnchor, constant: -15),
verticalSecondStackView.topAnchor.constraint(equalTo: verticalSecondUIView.topAnchor, constant: 15),
verticalSecondStackView.bottomAnchor.constraint(equalTo: verticalSecondUIView.bottomAnchor),
])
let ulText = UILabel()
let ulTextTwo = UILabel()
let ulTextThree = UILabel()
ulText.text = "text”
ulTextTwo.text = "text2”
ulTextThree.text = "text3”
verticalSecondStackView.addArrangedSubview(ulText)
verticalSecondStackView.addArrangedSubview(ulTextTwo)
verticalSecondStackView.addArrangedSubview(ulTextThree)
}
I appreciate all help.