【1】在AppDelegate中加入下面代码,使UINavigationController支持横竖屏切换
#pragma mark - LandScapeUINavigation
@interface UINavigationController (LandScapeUINavigation)
- (BOOL)shouldAutorotate;
@end
@implementation UINavigationController (LandScapeUINavigation)
-(BOOL)shouldAutorotate
{
return [self.viewControllers.lastObject shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [self.viewControllers.lastObject supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.viewControllers.lastObject preferredInterfaceOrientationForPresentation];
}
@end
【2】在
AppDelegate中的didFinishLaunchingWithOptions中设置rootViewController
HomeViewController *homeCtrl = [[HomeViewController alloc] init];
UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:homeCtrl];
navCtrl.navigationBarHidden = YES;
self.window.rootViewController = navCtrl;
return YES;
【3】在 AppDelegate加入下列代码
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskAll;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}
- (BOOL)shouldAutorotate
{
return YES;
}
【4】在想要横屏的controller中加入代码
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
NSLog(@"shouldAutorotateToInterfaceOrientation");
// Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
||(interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
- (NSUInteger)supportedInterfaceOrientations {
NSLog(@"supportedInterfaceOrientations");
return UIInterfaceOrientationMaskLandscape;
}
- (BOOL)shouldAutorotate {
NSLog(@"shouldAutorotate");
return YES;
}
【5】使UIImagePickerController支持横屏,加入下列代码
@interface UIImagePickerController (LandScapeImagePicker)
- (BOOL)shouldAutorotate;
@end
@implementation UIImagePickerController (LandScapeImagePicker)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
||(interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
- (BOOL)shouldAutorotate {
return YES;
}
@end