Android teem
Android teem

Reputation: 830

Stackview inside Other stackview width issue

I have an Stackview created in IB and it has Vertical orientation. This stackview has equal width to parent view.

Now I am created a Stackview programmatically for example

let stackViewHorizontal   = UIStackView()
    stackViewHorizontal.axis  = UILayoutConstraintAxis.horizontal
    stackViewHorizontal.distribution  = UIStackViewDistribution.fillEqually
    stackViewHorizontal.alignment = UIStackViewAlignment.leading
    stackViewHorizontal.spacing = 8
    stackViewHorizontal.translatesAutoresizingMaskIntoConstraints = false
    stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor,constant:0)
    stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor,constant:0)

Here mainStackView is a stackview which is created Via IB.and stackviewHorizontal is a stackview that is created programatically. I am putting to UILabels inside stackViewHorizontal. I expected this will expand to full length and each UiLabel will take 50% of the screen in width since stackview has horizontal axis and distribution is fillEqually.

But I am having a UiLabels next to eachother horizontally. but not taking full width of screen

What I am doing wrong please notify?

Upvotes: 0

Views: 4886

Answers (1)

Shehata Gamal
Shehata Gamal

Reputation: 100503

Activate constraints, also give it a height:

    stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor,constant:0).isActive = true
    stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor,constant:0).isActive = true

OR

    NSLayoutConstraint.activate([
       stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor,constant:0), 
       stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor,constant:0) 
    ])

//

    let stackViewHorizontal   = UIStackView()
    stackViewHorizontal.axis  = UILayoutConstraintAxis.horizontal
    stackViewHorizontal.distribution  = UIStackViewDistribution.fillEqually
    stackViewHorizontal.alignment = UIStackViewAlignment.leading
    stackViewHorizontal.spacing = 8
    self.view.addSubview(stackViewHorizontal) //// add it here 
    stackViewHorizontal.translatesAutoresizingMaskIntoConstraints = false
    stackViewHorizontal.leadingAnchor.constraint(equalTo: mainStackView.leadingAnchor, constant: 0).isActive = true
    stackViewHorizontal.trailingAnchor.constraint(equalTo: mainStackView.trailingAnchor, constant: 0).isActive = true

Upvotes: 3

Related Questions