为了账号安全,请及时绑定邮箱和手机立即绑定

如何以编程方式确定iPhone界面方向?

如何以编程方式确定iPhone界面方向?

梦里花落0921 2019-08-02 16:37:56
如何以编程方式确定iPhone界面方向?UIDevice.orientationinclude UIDeviceOrientationFaceUp和 的可能值UIDeviceOrientationFaceDown。虽然知道设备是扁平的可能是有用的,但这并不能告诉我们它是否是平面显示面向纵向或横向模式的界面。有没有办法在设备返回模糊信息的情况下找到GUI的当前方向?我想我可以跟踪方向变化事件以记住最后的纵向/横向方向或检查主要UIView的边界高度和宽度,但这似乎是kludgey。设备或UIView上有一个我失踪的财产吗?
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您可以通过3种方式获得方向:

  1. UIInterfaceOrientation orientation = self.interfaceOrientation; 返回UIInterfaceOrientation,接口的当前方向。它是UIViewController中的一个属性,只能在UIViewController类中访问它。

  2. UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 返回UIInterfaceOrientation,即应用程序状态栏的当前方向。您可以在应用程序的任何位置访问该属性。我的经验表明,这是检索真实界面方向的最有效方法

  3. UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];返回UIDeviceOrientation,设备方向。您可以在应用程序的任何位置访问该属性。但请注意,UIDeviceOrientation并不总是UIInterfaceOrientation。例如,当您的设备位于普通表上时,您可以获得意外的价值。


查看完整回答
反对 回复 2019-08-02
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

如果您只是关心设备是横向还是纵向,那么viewcontroller上有一些不错的便利方法:

UIDeviceOrientationIsLandscape(self.interfaceOrientation)
UIDeviceOrientationIsPortrait(self.interfaceOrientation)


查看完整回答
反对 回复 2019-08-02
?
函数式编程

TA贡献1807条经验 获得超9个赞

在viewcontroller中,您只需使用代码:

UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;

UIInterfaceOrientation是一个枚举:

typedef enum {
  UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
  UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
  UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeLeft,
  UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeRight} UIInterfaceOrientation;


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 537 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信