Let me try to explain it. Please tell me if I am wrong. I am just 70% sure about it.
Like I understand it, an UIView has a frame and an bounds rectangle. The job of the frame rectangle is to set the position of the UIView relative to it's superview. More precisely: Relative to the coordinate system of the superview. The job of the bounds rectangle is to set the drawing area of the UIView, relative to it's own coordinate system.
Briefly:
- frame rectangle is for positioning the UIView relative to its superview
- bounds rectangle is to set the drawing area of the UIView
Are there any mistakes or important things I missed?
http://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/WindowsandViews/WindowsandViews.html
For iOS. Origin coordinate is in different location from Mac OS (upper left, not lower left)
You are right.
You can use the two interchangably though it's just the frame is easier when using a view and bounds is easier when working inside a view (e.g. in the event handling or drawing code)
Note also that frame is undefined if there is a transform operating on the view.
Yes you are right.
When you need to use the view, then you use the frame; the bounds are used to actually implement the view. As an example, you need to use the bounds to draw a view or to handle touch events. Instead, you use the frame when creating a view or positioning a view in its superview etc.
A view's Frame: the position and size of a rectangle inside the superview where the view will fill.
A view's Bound: the position and size of a rectangle inside the view itself.
Check out Apple's guide on View Geometry. They have pretty good examples on what happens when you change bounds and frame values.