1

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

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

知道为什么吗?

4

3 回答 3

1

您可以按如下方式检查方向:

UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
    if( orientation == UIDeviceOrientationPortrait ) ...
于 2012-07-05T17:44:18.627 回答
1

从 iOS UIDevice 类参考:

方向

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

讨论

此属性的值始终返回 0,除非已通过调用 beginGeneratingDeviceOrientationNotifications 启用了方向通知。

因此,您需要执行以下操作:

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

然后不要忘记

    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

当您查看DidUnload

于 2012-09-14T16:35:08.720 回答
0

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

于 2012-07-05T17:39:01.940 回答