frame property, a CGRect, is the position of its rectangle within its superview, in the superview’s coordinate system. By default, the superview’s coordinate system will have the origin at the top left, with the x-coordinate growing positively rightward and the y-coordinate growing positively downward.
Setting a view’s frame to a different CGRect value repositions the view, or resizes it, or both. If the view is visible, this change will be visibly reflected in the interface. On the other hand, you can also set a view’s frame when the view is not visible — for example, when you create the view in code. In that case, the frame describes where the frame will be positioned within its superview when it is assigned a superview. UIView’s designated initializer is
initWithFrame:, and you’ll often assign a frame this way, especially because the default frame might otherwise be
(0,0,0,0), which is rarely what you want.
Forgetting to assign a view a frame when creating it in code, and then wondering why it isn’t appearing when added to a superview, is a common beginner mistake. A view with a zero-size frame is effectively invisible. If a view has a standard size that you want it to adopt, especially in relation to its contents (like a UIButton in relation to its title), an alternative is to send it the
Knowing this, we can generate programmatically the interface displayed in Figure 14-1. Start with a vanilla iOS app project based on the Window-Based Application ...