iOS: Can't change a width in a horizontal stackview
Asked Answered
D

1

7

I'm starting with iOS app and creating a table view. In my table I have a cell like this.

enter image description here

Now I need to center the horizontal stackview with stars vertically and horizontally. This stackview has fixed width and height.

It have to look like this.

enter image description here

For this I put it in another horizontal stackview. I tried to add the same constraints to it as you see for the label

The problem is that this external stackview does not stretch like a label. I also see that it's width and height are greyed out, I cannot change them. Why?

enter image description here

Doeskin answered 20/3, 2018 at 15:59 Comment(3)
Can't you just center horizontally the StackView ?Fenn
Please post a screenshot of the Attributes Inspector for that Stack ViewOusel
Don't put your "stars" stack view inside another stack view. Remove the Leading and Trailing constraints, and simply constrain it "centered horizontally" to the label above it.Cartie
S
6

There are many ways to autolayout this.

I think you should gain a better understanding of StackViews for future usage. I recommend reading on these resources:

In order to achieve what you need:

  1. Use only 1 horizontal StackView containing the stars. Constraint the stackview to the label by center horizontally.

  2. Use 2 StackViews and keep your constraints. Outer stackview, change it to vertical axis and center alignment.

Method 2 Image in Attributes Inspector (cmd + option + 4):

Attributes Inspector1

Slowworm answered 20/3, 2018 at 16:33 Comment(2)
"Method 2" is an option, but using a stack view to align one element is really the wrong way to go about it.Cartie
There are merits to both layouts. Option 1 is dependent on the label's layout. If a constraint on the label breaks (though unlikely) it'll also mess up the layout of the stars. Stackviews are cheap as it's only a transformation layer.Slowworm

© 2022 - 2024 — McMap. All rights reserved.