Well, it could certainly be done using auxiliary views to position things. Personally I would probably ditch the static image background and make all those white circles UIViews positioned the same way, which would guarantee they line up. I would make one rectangle centered on the superview with its width and height a proportion of the superview (0.8? or whatever fraction you need). Let’s call that one auxA. I would then constrain all the buttons to line up with that view’s edges. Bottom row would have center Y = auxA bottom. Left row would have center X = auxA left. etc. For the other axis, again I’d define a rectangle view for alignment, but one for each side. For example, for the bottom row, center X = auxA center X, center Y = auxA bottom. Height some fixed value, doesn’t matter. Width some proportion of main superview, or auxA, or multple of button size or whatever. The main thing is it would be sized to contain the single row of buttons. Then within that alignment view, you would add your buttons and use the spacer view technique. So button-spacer-button-spacer.....button. All spacer views would have height fixed doesn’t matter, equal widths to each other.
All this would be a lot simpler to illustrate if we could post images in the forum.
The other option would be to punt on auto layout and just position all your views in code. As much as I like auto layout, for something like this (particularly with rotation transforms involved) it might end up easier. Auto layout doesn’t play all that well with transforms, at least not last time I tried. But in your case with simple symmetrical views just rotating around their center it might be OK.