Scratcha
Scratcha

Reputation: 1401

iOS Autolayout: two buttons of equal width, side by side

I am currently having difficulty with AutoLayout. I am using interface builder and am trying to position two buttons of equal width side by side as illustrated in the following image.

objective layout

From the following Preview image, my titleImage has been properly constrained and is displaying correctly however the buttons are not. I have experimented by aligning button 1 with the leading edge of titleImage, and button2 with the trailing edge of titleImage, however the width distribution between the two buttons becomes skewed at this point, as demonstrated below.

problem scenario

My objective is to understand what constraints are missing and should be applied to the two buttons to maintain equal widths regardless of device. If possible I would like to achieve this through interface builder as opposed to additional code.

Upvotes: 99

Views: 60573

Answers (5)

Vvk
Vvk

Reputation: 4043

Follow Steps and Screenshots for easy solution


Step-1)

  • For Button 1 : Set Constraints: (1)Leading, (2)Top or Bottom asper your need, (3)Height


Step-2)

  • For Button 2 : Set Constraints: (1)Trailing,(2)Top or Bottom asper your need, (3)Height

Step-3)

  • Press Ctrl + Drag From Button 1 to Button 2

  • Select Horizontal Spacing


Step-4)

  • Select Both Button (using Command) and Add Constraints Equal Width


OUTPUT

Hope it Helps you :)

Upvotes: 80

Alvin George
Alvin George

Reputation: 14294

My solution is to

  1. Put a small view in the middle of two buttons and make it centre(Horizontal centre in container and vertical centre in contener as 0).
  2. Add height and width to the small view.
  3. Add buttons the constraints and give horizontal space constraints to small view.
  4. Give the small view background colour same as buttons or View's colour.

Note: See the Screenshot.

enter image description here

Upvotes: 0

Ben
Ben

Reputation: 3862

Stack layout in iOS9, will do the job really nice. Add stack view to your view and configure as follow:

enter image description here

Upvotes: 20

Vitalii Gozhenko
Vitalii Gozhenko

Reputation: 9354

You can check my example - you can easy aim this, by using proportional constraint. Also you can easy aim proportional multiple UIViews. Please look attached example

https://dl.dropboxusercontent.com/u/48223929/TestViewController.xib

Upvotes: 2

Abubakr Dar
Abubakr Dar

Reputation: 4078

Add the following constraints

  1. Assign equal width from button1 to button2.
  2. Assign horizontal spacing between both buttons.
  3. Assign leading space from button1 to its superview.
  4. Assign trailing space from button2 to its superview.
  5. Assign top space to both the buttons.
    Let me know if it works for you.

Upvotes: 251

Related Questions