我知道:默认情况下,应用程序和视图控制器支持的界面方向设置为iPad惯用语的UIInterfaceOrientationMaskAll和iPhone惯用语的UIInterfaceOrientationMaskAllButUpsideDown。因此,当我使用Single View Application模板创建一个新项目时,为了在iPhone中执行所有方向,我将以下两个方法添加到ViewController.m中。它有效!
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}
- (BOOL)shouldAutorotate
{
return YES;
}
然后我在AppDelegate.m下面的方法中更改了一些代码,将应用程序的根视图从UIViewController更改为UINavigationController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}
if(myNavigationController == nil)
myNavigationController = [[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = self.myNavigationController;
[self.window makeKeyAndVisible];
return YES;
}
之后,我无法处理iPhone iOS6模拟器中的UIInterfaceOrientationPortraitUpsideDown。我怎么解决这个问题?我试图在较旧的主题中搜索一些代码,但它仍然无效。
答案 0 :(得分:0)
myNavigationController
是属性吗?您将其引用为myNavigationController
和self.myNAvigationController
。看起来不一致,尤其是在初始化引用ivar的对象时,然后使用属性设置窗口的rootViewController。
另外,你应该澄清你的问题。我想你问的是如何让iPhone自动旋转到颠倒的肖像。答案是:不要。 iPhone不支持水平旋转锁定(不像iPad),违背了设计准则。
话虽如此:您可能想要检查所有viewControllers是否实现了旋转委托,并且它们都支持iPhone的颠倒旋转。我知道你说你开始使用单视图应用程序模板,但是没有其他原因可以阻止轮换。
编辑:您应该检查的另一件事是您的目标设置。此处的“支持的界面方向”部分可能会覆盖您的自定义旋转代码。