Contrary to other answers, I think you should at least consider the automatic layout system. It was created to make it easier to create predictable layouts like the one you described. Autolayout is controlled by the constraints that you impose on the views in the layout. You can create these restrictions visually or programmatically. Visually, your first view will look something like this:

The blue lines that you see contain a number of restrictions that indicate the interval between the buttons, the space around the buttons and the height and width of the buttons. You can see a couple of restrictions that have = on them - I selected all three buttons and gave them a restriction of equal height.
Here is a good visual format syntax that lets you describe constraints as strings. Take a moment to look at the linked document - you won’t need much more time to find out that you can read the lines. For example, your top layout can be specified as follows:
V:[button1]-[button2(==button1)]-[button3(==button1)]
In parentheses ==button1 indicates that the layout system makes button2 and button3 the same height as button1 . - indicates that a standard interval should be used between the buttons; you can specify a different interval if you want. For a 10-point interval, do the following:
V:|-10-[button1]-10-[button2(==button1)]-10-[button3(==button1)]-10-|
Once you have such a string, you can turn it into a constraint using the method: +[NSLayoutConstraint constraintsWithVisualFormat:options:metrics:views:]
Some restrictions cannot be indicated either visually or by the lines described above. Chief among them are those where you want to establish a constant (but unequal) relationship between the two views, as with your top and bottom layouts. You want one of them to occupy 40% of the available vertical space, and the other 60%. Do this using the method: +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:] . For example:
NSLayoutConstraint *c = [NSLayoutConstraint constraintWithItem:bottomView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:topView multiplier:1.5 constant:0];
This gives you a constraint that sets the height of the bottomView to 1.5 times the height of the topView (this is what you want, since 60/40 = 1.5).
If you create constraints programmatically, you can add them to the corresponding view when creating (or loading) a hierarchy of views. Your color management method -viewDidLoad is a great place to do this.