检测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所做的。