检测iOS设备方向locking

如何以编程方式检查设备方向是否在iOS中被locking? 我在UIDevice中看不到任何东西。 我知道这应该是透明的应用程序。 但是如果方向被locking,我想改变显示内容的方式(如Youtube应用程序所做的;locking为横向而不是纵向)。 这一定是可能的。

没有办法如何检测方向是否locking。 YouTube应用不会locking到风景,它只是以横向显示电影,但是当您旋转iPhone时,电影也会旋转(如果没有方向locking)。

IOW方向locking由系统处理,对您的应用程序透明。

如果你想实现这个function – 即使iPhone处于纵向模式,然后启用视图旋转,只需在横向模式下显示你的视图。 它的行为方式与YouTube应用相同。

更新评论:

.h BOOL rotationEnabled; .m - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return rotationEnabled || ( toInterfaceOrientation == UIInterfaceOrientationLandscapeRight ); } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; rotationEnabled = YES; } 

您可以使用UIAccelerometer类来详细确定手机的方向。 如果加速度vector进入其最大绝对分量在X轴上的状态,即横向方向。 在理论上,这可以用来检测方向locking:如果在这种情况发生的几秒钟内,控制器不会接收到对shouldRotateToInterfaceOrientation的调用,并且[[UIDevice currentDevice] orientation]属性不在横向上,那么可以安全地假定用户locking方向。

这个复杂的,有一个延迟,因为shouldRotateToInterfaceOrientation将在实际的vector实际进入一个景观区域后被调用。 整个想法有些诡异,你可能应该重新考虑为什么当用户不愿意展示风景时,你真的需要展示风景。

我不认为你可以找出方向是否locking。 我前段时间找过,什么都没find。 你可以做的是忽略方向,只是提供在你的视图控制器的风景…然后它将被显示在风景无论如何。

我认为这也是youtube所做的。