Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 检测iOS设备方向锁定_Iphone_Ios_Orientation - Fatal编程技术网

Iphone 检测iOS设备方向锁定

Iphone 检测iOS设备方向锁定,iphone,ios,orientation,Iphone,Ios,Orientation,如何以编程方式检查iOS中的设备方向是否已锁定?我在这台设备上什么也看不到。我知道这对应用程序来说应该是透明的。但如果方向被锁定,我想改变显示内容的方式(就像Youtube应用程序一样;它锁定的是横向而不是纵向)。这必须是可能的 我认为你无法确定方向是否锁定。我很久以前就找过了,什么也没找到。你能做的就是忽略方向,只在你的视图控制器中提供风景。。。然后,无论发生什么,它都会出现在风景中 我认为youtube也在这样做。无法检测方向是否被锁定。YouTube应用程序不会锁定到横向,它只是以横向方向

如何以编程方式检查iOS中的设备方向是否已锁定?我在这台设备上什么也看不到。我知道这对应用程序来说应该是透明的。但如果方向被锁定,我想改变显示内容的方式(就像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
将为您提供与此片段相同的行为,而无需任何额外代码;如果您离开并返回应用程序,如果锁定,视频将旋转为纵向。