Iphone 检测iOS设备方向锁定
如何以编程方式检查iOS中的设备方向是否已锁定?我在这台设备上什么也看不到。我知道这对应用程序来说应该是透明的。但如果方向被锁定,我想改变显示内容的方式(就像Youtube应用程序一样;它锁定的是横向而不是纵向)。这必须是可能的 我认为你无法确定方向是否锁定。我很久以前就找过了,什么也没找到。你能做的就是忽略方向,只在你的视图控制器中提供风景。。。然后,无论发生什么,它都会出现在风景中Iphone 检测iOS设备方向锁定,iphone,ios,orientation,Iphone,Ios,Orientation,如何以编程方式检查iOS中的设备方向是否已锁定?我在这台设备上什么也看不到。我知道这对应用程序来说应该是透明的。但如果方向被锁定,我想改变显示内容的方式(就像Youtube应用程序一样;它锁定的是横向而不是纵向)。这必须是可能的 我认为你无法确定方向是否锁定。我很久以前就找过了,什么也没找到。你能做的就是忽略方向,只在你的视图控制器中提供风景。。。然后,无论发生什么,它都会出现在风景中 我认为youtube也在这样做。无法检测方向是否被锁定。YouTube应用程序不会锁定到横向,它只是以横向方向
我认为youtube也在这样做。无法检测方向是否被锁定。YouTube应用程序不会锁定到横向,它只是以横向方向显示电影,但当你们旋转iPhone时,电影也会旋转(若并没有方向锁定) 低方向锁由系统处理,对应用程序透明 如果您想实现此功能,只需在横向模式下显示视图(即使iPhone处于纵向模式),然后启用视图旋转。它的行为方式将与YouTube应用程序相同 最新评论:
.h
BOOL rotationEnabled;
.m
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return rotationEnabled || ( toInterfaceOrientation == UIInterfaceOrientationLandscapeRight );
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
rotationEnabled = YES;
}
您可以使用
UIAccelerator
类详细确定手机的方向。如果加速度矢量进入其最大绝对分量位于X轴上的状态,则为横向。理论上,这可以用来检测方向锁定:如果在发生这种情况的几秒钟内,控制器没有收到调用shouldRotateToInterfaceOrientation
,并且[[UIDevice currentDevice]方向]
属性不在横向,然后,您可以安全地假设用户锁定了方向
这很复杂,而且有一个延迟,因为在实际向量实际进入景观区域后,
shouldRotateToInterfaceOrientation
将被调用。整个想法有点像黑客,你可能应该重新考虑一下,当用户喜欢不显示风景时,为什么你真的需要显示风景。是的,这就是我担心的。但youtube确实检测到了锁。如果我以纵向方式握住手机并打开视频,它将以纵向方式播放(并随着我旋转手机而旋转)。如果我锁定方向并做同样的事情,它将在横向中打开。这不是默认行为。Youtube正在检测锁并切换到默认行为。设置或取消设置锁时调用-[UIViewController shouldRotateToInterfaceOrientation:
。设置锁时调用它并不重要;我的应用程序可能没有运行。问题在于区分锁定的肖像和解锁的肖像。Izzy有一个很好的旋转解决方案。我所知道的以特定方向显示视图的唯一方法是:-(BOOL)应该自动旋转指针FaceOrientation:(UIInterfaceOrientation)到InterfaceOrientation{toInterfaceOrientation==UIInterfaceOrientationAndscapeRight;}
但这会禁用自动旋转。请看我更新的答案。示例如何在LandscapeRight中最初显示,然后允许旋转。在iOS 6中,不推荐使用shouldAutorotateToInterfaceOrientation:
方法,但是新方法preferredInterfaceOrientationForPresentation
将为您提供与此片段相同的行为,而无需任何额外代码;如果您离开并返回应用程序,如果锁定,视频将旋转为纵向。