Figuring out what the center constraint means when the multiplier is not 1.0 is tricky. I did some experimenting in Xcode 6 and here are my conclusions.
The constraint in question has the form A.center.x = B.center.x * m + c
, where A
and B
are the views involved, m
is the constraint's multiplier, and c
is the constraint's constant.
Let's assume B's center.x
is fixed by some other constraints. Then I believe autolayout behaves as if it used this algorithm:
Find the nearest common ancestor view of A and B. Call this common ancestor G.
Let bxg = B.x.center in G's coordinate system. You could compute this in code as CGFloat bxg = [G convertPoint:B.center fromView:B.superview].x
.
Compute axg = A's desired x-center in G's coordinate system. CGFloat axg = bxg * m + c
.
Convert axg to the coordinate system of A.superview
, and store it as A.center.x
.
OK, so given all that, how do we use center constraints to achieve your goal of “evenly spaced views”? We don't.
Here's the problem. Suppose all three of your subviews have the same width, w. (The problem is even harder if they have different widths.) And let's say the container view has width W. There are four margins (one to the left of the leftmost subview, one between the left subview and the middle subview, one between the middle subview and the right subview, and one to the right of the right subview.)
The width of the margin should thus be (W - 3 w) / 4. Then we want to somehow plug that into another constraint. You wanted to use a center constraint, but for simplicity, let's consider a left-edge constraint on the leftmost view L. we want the constraint to be L.left = (W - 3 w) / 4. This constraint is too complicated for autolayout to handle directly. Autolayout constraints can only involve two view attributes, but this involves three.
The solution is to introduce spacer views. Let's start with our three desired subviews:

I've already constrained each of these three subviews to be 80x80 and vertically centered.
Now I'll add four spacer views, shown in gray:

I've constrained each spacer's height and vertical center, but I have not constrained their widths. What I will do next is constrain all of the spacers to have equal widths:

Then I'll pin each spacer's leading and trailing edges to its nearest neighbors, manually setting the constants to zero. Here's how I do the first spacer:

I do the same for the other three spacers. I won't show that here.
When I select the view controller and ask Xcode to update all frames, I get evenly spaced views:

Since I don't actually want the spacers to be visible at runtime, I'll select them and set them to hidden. Hidden views still participate in layout.

Now, what if the subviews aren't all the same width? Let's change the width of the blue subview:

Auto layout updates the frames so that the spacers continue to have equal width.