【发布时间】:2010-10-19 19:33:33
【问题描述】:
这只是一个测试应用程序,只有一个 AppDelegate 类来创建我所做的只是创建一个基于 Window 的应用程序,在 info.plist 中将支持的方向设置为仅横向,然后添加以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft];
// Override point for customization after application launch.
UIAlertView *test = [[UIAlertView alloc] initWithTitle:@"hu" message:@"hui" delegate:nil cancelButtonTitle:@"hi" otherButtonTitles:nil];
[test show];
[window makeKeyAndVisible];
NSLog(@"win %f - %f", window.bounds.size.width, window.bounds.size.height);
return YES;
}
如果没有设置状态栏方向的第一行,即使界面的其余部分为横向左侧,警报视图也会以纵向显示。
无论如何,日志仍然给出:
win 768.000000 - 1024.000000
这是错误的方式(因此当我在我的真实应用中添加子视图时,框架不正确)
Apple 似乎真的在界面旋转上搞砸了,因为我除了问题什么都没有,我不记得在 iPhone 上发生过任何这种情况,所以请有人告诉我如何解决这个问题。
我会给至少能解释为什么会发生这种情况并希望能提供解决方案的人提供 500 个声望(除了我的声望的 10 个)。
【问题讨论】:
-
您使用的是哪个 SDK 版本?
-
为什么要在 AppDelegate 中这样做?为了解决这个问题,我在 AppDelegate 中创建了一个 BOOL,它是 False,直到调用该方法并更改为 TRUE。然后在我的 MainVC 的 viewWillLoad 中,我启动了一个计时器来检查 AppDelegate BOOL 是否为 TRUE。如果是我触发显示警报的方法。为了使它看起来更好,我还在我的 MainVC 上显示默认图像,直到出现消息。这似乎是一种 hacky 方法,但我不必总是显示警报视图,所以我也检查一下。
标签: iphone objective-c ipad interface uiwindow