I have a settings view controller with a table view. The table view is supposed to set its frame to be the frame of the view controller. My app only supports landscape mode, so
when you call [UIView init]
it will default to the screen size of your device in portrait mode (same goes for iPad but with larger size).
Inside [UIViewController viewDidLoad]
the self.view will also default to this size.
Screen rotation is only done to the top view (controller) in your hierarchy and rotation messages are forwarded through container-VCs that support this behavior (e.g. UINavigationController, UITabBarController).
If you want your view to be sized correctly, use [UIView initWithFrame:self.view.bounds]
for creating a view. Insinde UIViewController you only have the chance to override the loadView Method to set the frame before viewDidLoad gets called (or you could use a different XIB for landscape). You could also hardcode the view's size by setting its frame first thing in viewDidLoad