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

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

梦里花落0921
浏览 538回答 3
3回答

慕工程0101907

您可以通过3种方式获得方向:UIInterfaceOrientation orientation = self.interfaceOrientation; 返回UIInterfaceOrientation,接口的当前方向。它是UIViewController中的一个属性,只能在UIViewController类中访问它。UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 返回UIInterfaceOrientation,即应用程序状态栏的当前方向。您可以在应用程序的任何位置访问该属性。我的经验表明,这是检索真实界面方向的最有效方法。UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];返回UIDeviceOrientation,设备方向。您可以在应用程序的任何位置访问该属性。但请注意,UIDeviceOrientation并不总是UIInterfaceOrientation。例如,当您的设备位于普通表上时,您可以获得意外的价值。

至尊宝的传说

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

函数式编程

在viewcontroller中,您只需使用代码:UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;UIInterfaceOrientation是一个枚举:typedef enum {   UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,   UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,   UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeLeft,   UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeRight} UIInterfaceOrientation;
打开App,查看更多内容
随时随地看视频慕课网APP