TARGETの設定でSupported Interface Orientationsが設定できるが、Upside Downをオンにしても実際は回転しない場合がある。UINavigationControllerのカテゴリメソッドを以下のように実装しておくと解決できる。UITabBarControllerも同様に実装すると良い。

#import "UINavigationController+Rotate.h"

@implementation UINavigationController (Rotate)

// iOS 6.* and over
- (BOOL)shouldAutorotate
{
    return YES;
}

// iOS 6.* and over
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

// iOS 5.* and below
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

@end