界面方向和设备方向有什么区别?

7
什么是界面方向和设备方向之间的区别呢?两者看起来很相似,但它们之间的实际区别是什么?
2个回答

12

接口方向可以是任何方向,不受设备方向的限制。设备方向是您所持设备的实际物理方向,这是不可变的;它是什么就是什么。如果您持有设备处于纵向,则设备方向为纵向。但是,仅因为设备处于纵向并不意味着您的界面也处于纵向。您可能需要应用程序仅提供横向方向,因此接口方向将与设备方向不同。


在项目设置中选择方向时,为什么可能的方向标签被称作“设备方向”,明显是指 UIInterfaceOrientation 而不是 UIDeviceOrientation - Maxi Mus
顺便说一句,如果您解释一下为什么在枚举中左右被交换,那么您的答案会更好。这只是一种习惯,让人们可以从主页按钮的位置判断界面方向,还是有数学原因? - Maxi Mus

2

以下说明摘自此网站

UIDeviceOrientation是UIDevice类的一个属性,有以下可能的值:

  • UIDeviceOrientationUnknown - 无法确定
  • UIDeviceOrientationPortrait - 主页按钮朝下
  • UIDeviceOrientationPortraitUpsideDown - 主页按钮向上
  • UIDeviceOrientationLandscapeLeft - 主页按钮向右
  • UIDeviceOrientationLandscapeRight - 主页按钮向左
  • UIDeviceOrientationFaceUp - 设备平放,屏幕朝上
  • UIDeviceOrientationFaceDown - 设备平放,屏幕朝下

至于UIInterfaceOrientation,则是UIApplication的一个属性,只包含4种可能性,对应于状态栏的方向:

  • UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait
  • UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown
  • UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight
  • UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft (从文档中复制)

例如,设备(实际的iPhone或iPod)可能处于UIDeviceOrientationLandscapeRight状态,但如果您的应用程序不支持该状态,则它(您的应用程序)仍可能处于UIInterfaceOrientationPortrait状态。

此外,要获取UIDeviceOrientation,您可以使用[[UIDevice currentDevice] orientation],而要获取UIInterfaceOrientation,您可以使用[[UIApplication sharedApplication] statusBarOrientation]

更多信息


很好的回答!但是链接似乎已经失效了。 - aheze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接