UIViewController interfaceOrientation问题

时间:2011-03-10 17:29:40

标签: uiviewcontroller uiinterfaceorientation

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

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

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

3 个答案:

答案 0 :(得分:8)

尝试[UIApplication sharedApplication].statusBarOrientation并检查交换机中的UIDeviceOrientationPortraitUIDeviceOrientationPortraitUpsideDown等,因为[self interfaceOrientation]根据我的经验不可靠。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我正在使用iOS App的旋转和方向。我发现self.interfaceOrientation总是会在viewDidAppear或之后调用时给你一个正确的结果。

[UIApplication sharedApplication]。直接向UIWindow添加视图时,首选.statusBarOrientation。

希望它有所帮助。