2012-07-05 63 views
1

我试着检查当前呈现的视图控制器的UIInterfaceOrientation,并出于某种原因它总是返回风景。UIViewController的UIInterfaceOrientation

UIInterfaceOrientation currentOrientation = (UIInterfaceOrientation)[[UIApplication sharedApplication] statusBarOrientation]; 
      if (currentOrientation == UIInterfaceOrientationPortrait){ 
       self.scrollView_.colMargin = 50; 
      } else { 
       self.scrollView_.colMargin = 130; 
      } 

任何想法为什么?

回答

1

您可以检查方向如下:

UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    if(orientation == UIDeviceOrientationPortrait) ... 
+0

同样的事情,这并未” t也工作 – xonegirlz 2012-07-05 17:51:51

+1

你锁定在横向模式?你有设置可以旋转的设备吗?有一百万的东西可以防止它,但我向你保证上面的代码奇妙:) – bgoers 2012-07-05 17:59:58

+0

不,我不是..它被设置为与肖像和风景旋转 – xonegirlz 2012-07-05 21:09:55

0

铸造不是魔术。状态栏方向我使用的值不同于界面方向。改为使用当前的视图控制器self.interfaceOrientation属性。

+0

它总是导致肖像 – xonegirlz 2012-07-05 17:42:51

1

从iOS的UIDevice类参考:

方向

返回设备的物理方向。 (只读)

讨论

除非取向通知已通过调用beginGeneratingDeviceOrientationNotifications启用此属性的值总是返回0。

所以,你需要做的是这样的:

- (void) viewDidAppear:(BOOL)animated { 
[super viewDidAppear:animated]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; 
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

,然后不要忘记

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 

当你viewDidUnload