0

检查设备界面方向的正确方法是什么。我应该检查状态栏方向还是当前活动视图控制器的方向属性?

也有人可以向我解释一下设备方向(如面朝上和面朝下)有用的场景吗?

4

3 回答 3

1

如果代码在以方向作为输入的方法之外,我们使用:

[[UIApplication sharedApplication] statusBarOrientation]

我们的一些应用程序中有它,它似乎没有造成任何麻烦......:D

UIInterfaceOrientationPortrait此外,和之间没有太大区别UIInterfaceOrientationPortraitUpsideDown,除了主页按钮相对于屏幕方向(倒置很好......倒置......)

一些开发人员选择不支持该UIInterfaceOrientationPortraitUpsideDown模式只是因为将设备放在顶部的主页按钮看起来很尴尬,但如果您愿意,您可以选择实现并支持它(我们所有的应用程序都这样做)。

以下是有关此可能值的更多信息以及每个值的描述:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplication_Class/Reference/Reference.html#//apple_ref/c/tdef/UIInterfaceOrientation

编辑:

但是请注意,iOS 6 改变了 UIViewControllers 的工作方式,这shouldAutorotateToInterfaceOrientation已经被弃用了。看到这个帖子:

如何在 iOS 6 中强制 UIViewController 为纵向

这也是 UIViewController 上的 Apple 文档,其中提供了更多详细信息:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_ref/occ/instm/UIViewController/shouldAutorotateToInterfaceOrientation

于 2012-09-27T11:49:26.780 回答
1

如果您正在寻找用户查看界面的方式,请使用界面方向。我想这两种方法都很好。

如果您想找出物理设备的定位方式,请使用设备方向。

请注意,界面方向与设备方向不同(因此没有“设备的界面方向”之类的东西)。

设备方向可以是平上/平下(界面只能是纵向/倒置/横向右/左)。如果设备旋转但界面设置为常量,则设备方向也可能不同。加上横向方向是相反的,例如设备landsapeRight == interface LandscapeLeft。

我不确定何时面朝上/朝下可能有用。

以防万一您需要实际的方法,您可以使用以下方法从视图控制器检查界面方向:

UIInterfaceOrientation orientation = self.interfaceOrientation;

或者从应用程序中的任何类使用这个(状态栏检查):

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

像这样获取设备方向:

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
于 2012-09-27T12:00:45.833 回答
1

你可以使用下面的代码..

愿这对你有所帮助。

if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
    {     
       //  Orientation is   Portrait   
    }       
    if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) 
    {       
       // Orientation is Landscape        
    }
于 2012-09-27T12:12:37.033 回答