应用程序的支持:iOS6的+
我的应用程序工作在纵向和横向。 但1个控制器应仅适用于人像。
问题是,当我在景观和推视图控制器的新视图 - 控制在景观以及直到我把它旋转为纵向。 那么它停留在肖像所应当的。
是否有可能总是使它出现在画像? 即使其母公司是推动它的景观?
所有下面的代码没有帮助
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
而这种代码的工作之前,除非我没有从横向推如何在iOS 6中迫使一个UIViewController为纵向
我通过增加viewDidLoad中下列行解决这
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:c animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
首先,你需要创建一个类别:
UINavigationController的+ Rotation_IOS6.h
#import <UIKit/UIKit.h>
@interface UINavigationController (Rotation_IOS6)
@end
UINavigationController的+ Rotation_IOS6.m:
#import "UINavigationController+Rotation_IOS6.h"
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
@end
然后,您实现这些方法在你的类,你想成为唯一的景观:
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
如果你正在使用的UITabBarController,只需更换为的UITabBarController UINavigationController的的。 该解决方案经过长时间的搜寻后,工作对我来说太好了! 我是因为你现在同样的情况!
编辑
于是,我看到了你的样品。 你需要做出一些改变。 1 - 创建一个新类的UINavigationController的类别。 命名类的UINavigationController + Rotation_IOS6(h和.M)2 -你并不需要实现方法preferredInterfaceOrientationForPresentation
。 您的类别应该是这样的:
#import "UINavigationController+Rotation_IOS6.h"
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
@end
3 - 你要旋转仅在景观类,包括这在执行,正是这样:
// Rotation methods for iOS 6
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
4 - 我会建议也包括您在景观想要自转的iOS 5类中的方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}