我正在开发一个基于 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;
}
瞧!这解决了我的问题。然而,对我来说,这感觉就像是一个根本层面的改变,我不想在我的发展阶段做出这样的改变。我打算成为我的根视图控制器的东西现在是一个模态视图。有人对此问题有其他解决方案吗?
提前致谢!