检查设备界面方向的正确方法是什么。我应该检查状态栏方向还是当前活动视图控制器的方向属性?
也有人可以向我解释一下设备方向(如面朝上和面朝下)有用的场景吗?
检查设备界面方向的正确方法是什么。我应该检查状态栏方向还是当前活动视图控制器的方向属性?
也有人可以向我解释一下设备方向(如面朝上和面朝下)有用的场景吗?
如果代码在以方向作为输入的方法之外,我们使用:
[[UIApplication sharedApplication] statusBarOrientation]
我们的一些应用程序中有它,它似乎没有造成任何麻烦......:D
UIInterfaceOrientationPortrait
此外,和之间没有太大区别UIInterfaceOrientationPortraitUpsideDown
,除了主页按钮相对于屏幕方向(倒置很好......倒置......)
一些开发人员选择不支持该UIInterfaceOrientationPortraitUpsideDown
模式只是因为将设备放在顶部的主页按钮看起来很尴尬,但如果您愿意,您可以选择实现并支持它(我们所有的应用程序都这样做)。
以下是有关此可能值的更多信息以及每个值的描述:
编辑:
但是请注意,iOS 6 改变了 UIViewControllers 的工作方式,这shouldAutorotateToInterfaceOrientation
已经被弃用了。看到这个帖子:
如何在 iOS 6 中强制 UIViewController 为纵向
这也是 UIViewController 上的 Apple 文档,其中提供了更多详细信息:
如果您正在寻找用户查看界面的方式,请使用界面方向。我想这两种方法都很好。
如果您想找出物理设备的定位方式,请使用设备方向。
请注意,界面方向与设备方向不同(因此没有“设备的界面方向”之类的东西)。
设备方向可以是平上/平下(界面只能是纵向/倒置/横向右/左)。如果设备旋转但界面设置为常量,则设备方向也可能不同。加上横向方向是相反的,例如设备landsapeRight == interface LandscapeLeft。
我不确定何时面朝上/朝下可能有用。
以防万一您需要实际的方法,您可以使用以下方法从视图控制器检查界面方向:
UIInterfaceOrientation orientation = self.interfaceOrientation;
或者从应用程序中的任何类使用这个(状态栏检查):
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
像这样获取设备方向:
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
你可以使用下面的代码..
愿这对你有所帮助。
if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
{
// Orientation is Portrait
}
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
{
// Orientation is Landscape
}