我正在开发一个基于 xib 的仅横向应用程序。该应用程序可以在横向模式下正确启动。然而,我的主 ViewController 中的视图是纵向呈现的。也就是说,它旋转 90 度,使图像看起来被裁剪并且不会占据整个屏幕。如果我使用我的界面来呈现模式视图控制器,然后返回到主 ViewController,问题会自行纠正(视图以横向方式呈现)。在Xcode 4.2下没有出现这个问题。它发生在升级到 Xcode 4.3 后,当我升级项目设置时,Xcode 会自动实现唯一的代码更改。
根据其他帖子中的建议,我验证了 Info.plist 支持的界面方向和初始界面方向的设置。我重写了每个视图控制器的 shouldAutorotateToInterfaceOrientation 方法,仅针对横向方向返回 YES。另外,我关闭了视图的自动调整大小,因为我不想改变视图的大小/方向。
根据此链接 [1] 中的想法,我怀疑问题是视图在启动时没有收到更改方向的调用,可能是由于删除了 MainWindow.xib 概念,该概念似乎被以下内容取代AppDelegate.m 中的 Xcode 插入代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
我修改了这个方法来生成一个通用的根视图控制器,从中呈现我的 ViewController 类,如下面的代码所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ViewController* myViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.viewController = [[UIViewController alloc] init];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
[self.viewController presentModalViewController:myViewController animated:NO];
return YES;
}
瞧!这解决了我的问题。然而,对我来说,这感觉像是一个根本性的改变,我不想在我的发展阶段做出这样的改变。我原本打算成为根视图控制器的现在是模态视图。有人对这个问题有其他解决方案吗?
提前致谢!
我也遇到了同样的问题:一个本来应该处于横向模式的应用程序假设 ViewController 始终处于纵向模式。我对项目和 info.plist 的各个方面进行了大量更改,包括为主 UIWindow 提供一个横向的根视图控制器。还是没用。我最终撤消了所有更改,只是将下面注明的两行添加到我的应用程序委托中:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[_window addSubview:[_viewController view]];
glView = _viewController.glView;
// THIS FIXED ORIENTATION FOR ME IN IOS 6
_window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
// END
...my other setup code here...
}
没有其他必要了。
由于某种原因,在 iOS 6 中,UIWindow root-view-controller 设置有时会在 Interface Builder 中被忽略。我确信我的推理在某些地方是错误的,但我认为这很可能有助于促使某人找到更全面、更详尽的答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)