iOS autolayout to center my view between two views

autolayout, interface-builder, ios

Solution

The way to do this is to have 2 invisible "spacer" views between you visible views.

You can't make spaces have equal height. But you use the "spacer" views and place them between your views (with 0 gap to the surrounding views).

Then you give these views equal heights and they will push your views around to centre the `My View` with equal gap to the `Bottom View` and `Top View`.

i.e. like this...

V:|[Top View][spacer1][My View][spacer2(==spacer1)][Bottom View]|

EDIT - Another way

I just thought of another way of doing this. You could have an invisible container `UIView` that is between `Top View` and `Bottom View` with no gap.

Then you place `My View` inside this invisible view and centre it vertically.

Problem

How to set up autolayout in Interface Builder to arrange views vertically as shown on image: `Top view` pinned to top screen edge, `Bottom view` pinned to bottom screen edge. `My view` should be centered between top and bottom views (so distance to `Top view` equals to distance to `Bottom view`)

Original source