1

我像往常一样有一个 UIViewController 的子类。当我加载应用程序时,我需要调整一些我必须以编程方式放入的元素的大小。当然,大小取决于界面方向:所以,我做了:

- (void)viewDidLoad {
  switch( [self interfaceOrientation] ) {
     case UIInterfaceOrientationPortrait:
     case UIInterfaceOrientationPortraitUpsideDown:
          NSLog(@"Portrait");
          break:
     case UIInterfaceOrientationLandscapeLeft:
     case UIInterfaceOrientationLandscapeRight:
          NSLog(@"Landscape");
          break;
  }

但无论模拟器/设备的方向如何,在 viewDidLoad/WillAppear 中的情况始终是 Portrait,即使一切都正确旋转。在 Plist 中,我添加了所有支持的方向。提示?

4

3 回答 3

8

根据我的经验,尝试[UIApplication sharedApplication].statusBarOrientation检查开关中的UIDeviceOrientationPortrait,UIDeviceOrientationPortraitUpsideDown[self interfaceOrientation]是不可靠的。

于 2011-04-01T03:08:31.843 回答
0

1) 确保 willAppear 中的界面方向返回错误的界面方向。2)尝试看这里http://developer.apple.com/library/ios/#qa/qa1688/_index.html

3)确保主视图控制器只是窗口中的viewcontroller(窗口中只有一个vc)

于 2011-03-30T10:47:57.867 回答
0

我正在处理 iOS 应用程序的旋转和方向。我发现如果在 viewDidAppear 中或之后调用 self.interfaceOrientation 总是会给你一个正确的结果。

[UIApplication sharedApplication].statusBarOrientation 在直接向 UIWindow 添加视图时应该是首选。

希望能帮助到你。

于 2014-06-13T07:12:40.043 回答