Am new to Auto layout constraints in Xcode. I have one Bottom View like UITabBar
with 6 UIButtons
. Without constraints I aligned those buttons with
Spacer views should no longer be necessary unless you need space between borders.
You can create a StackView with equal spacing which will dynamically adjust the space between your stack views to use up all available space without altering the size of your subviews.
Interface builder can be a bit misleading here. the value you put in for spacing is the minimum spacing required not what the actual spacing will be.
The StackView will handle your spacing, making the size of your buttons equal you can use regular constraints for.
Select all the buttons and in Xcode’s Pin menu
iOS 9 has a new UIKit class called UIStackView. It is very helpful in stacking up views horizontally or vertically, like the way you want. You should check out this tutorial: Raywenderlich: UIStackView Tutorial
With iOS 9 and Xcode 7, you can now have the expected result with UIStackView
and only 3 or 4 auto layout constraints.
The following step by step uses Storyboard.
UIButton
s and 5 UIView
s. Align them horizontally. Give some color to your views.Stack
button. You will have all your buttons and colored views aligned in a UIStackView
.Utilities
panel and select the Attributes Inspector
item. There, click on the Distribution
button and select "Fill Equally".Pin
button, check the Height
button, add the required value and click on the Add 1 Constraint
button.As an alternative, If you want each element of your stack view to have its height matching its width, select the first button of your stack view, click on the Pin
button, select Aspect Ratio
and click on the Add 1 Constraint
button.
You can check that your aspect ratio constraint is correct in your Document outline
(left panel) and, if you need, you can change it with a different constraint in the Attribute inspector
(right panel).
pin
button, make sure the Constrain to margin
button is not select and set leading, trailing and bottom constraints to zero. Make sure that the bottom constraint is related to your view controller's view. Then, change the Update Frames
button to "All Frames in Container". You can now click on the Add 3 Constraints
button.Your stack view is now set.
Further remark:
If you don't need your colored views width to match your buttons width, you can build a stack view with only UIButtons
and simply add spacing to your stack view in the Attribute inspector
. However, you will have to find a way to add a background color behind your stack view. Apple states about it in the UIKit Framework Reference:
The UIStackView is a nonrendering subclass of UIView. It does not provide any user interface of its own. Instead, it just manages the position and size of its arranged views. As a result, some properties (like backgroundColor) have no affect on the stack view.
I've build a Xcode project with 4 different stack views:
UIButton
s intrinsic content size for its height,UIButton
"equal width and height" constraint,You can find this project on this GitHub repo.
check this image and made your constraints like below...
RESULT:- preview in different sizes
With Stackview (For iOS 9.0 and above)
NOTE: If you have to make app for iOS 9 and later then
UIStackView
is another option for you