相关疑难解决方法(0)

是否有记录的方式来设置iPhone方向?

我有一个应用程序,我想在某些视图中支持设备旋转,但其他在横向模式下没有特别有意义,所以当我交换视图时,我想强制旋转设置为纵向.

在UIDevice上有一个未记录的属性设置器可以完成这个技巧,但显然会产生编译器警告,并且可能会随着SDK的未来版本而消失.

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
Run Code Online (Sandbox Code Playgroud)

是否有任何记录的方法来强制定位?

更新:我想我会提供一个例子,因为我没有找到shouldAutorotateToInterfaceOrientation,因为我已经实现了它.

我希望我的应用程序支持View 1中的横向和纵向,但只支持View 2中的纵向.我已经为所有视图实现了shouldAutorotateToInterfaceOrientation但是如果用户在View 1中处于横向模式然后切换到View 2,我想强制执行手机旋转回肖像.

iphone cocoa-touch objective-c

94
推荐指数
8
解决办法
8万
查看次数

如何将自动旋转约束到某些视图的单一方向,同时允许其他方向的所有方向?

这个问题是关于UINavigationController中的iOS设备旋转和多个受控视图.有些观点应该限制为纵向,有些观点应该自由旋转.如果您尝试使用三个视图创建最简单的设置,您会注意到自动旋转行为有一些非常令人讨厌的怪癖.然而,这个场景非常简单,所以我想我要么没有正确地进行自动旋转实施,要么就是忘了什么.

我有一个非常基本的演示应用程序,显示了怪异,我制作了一个视频显示它在行动.

设置非常基本:调用三个视图控制器FirstViewController,SecondViewController并且ThirdViewController所有扩展AbstractViewController显示带有类名称的标签,并且shouldAutorotateToInterfaceOrientation:当设备处于纵向时返回YES .SecondViewController重写此方法以允许所有旋转.所有三个具体类都添加了一些彩色方块,以便能够通过将控制器推入/关闭来在视图之间导航UINavigationController.到目前为止,我想说的是一个非常简单的场景.

如果您以纵向或横向方向握住设备,这是我不仅希望实现的结果,而且还期望.在第一张图片中,您会看到所有视图都是"直立",而在第二张图片中,您会看到只有第二个视图控制器反转设备的方向.要清楚,应该可以从横向模式的第二个视图导航到第三个视图,但因为第三个视图仅支持纵向方向,所以它应该只能以纵向显示.查看结果是否正常的最简单方法是查看载体条的位置.

纵向模式下设备的预期视图方向 横向模式下设备的预期视图方向

但这个问题在这里是因为实际结果完全不同.根据您在旋转设备时所处的视图,并根据您导航到下一个视图,视图将不会旋转(具体而言,didOrientFromInterfaceOrientation:永远不会调用该方法).如果你在第二个横向并且导航到第三个,它将具有与第二个相同的方向(=坏).但是,如果您从第二个导航回到第一个,则屏幕将旋转为"强制"纵向模式,并且载波条将位于设备的物理顶部,无论您如何握住它.视频更详细地显示了这一点.

横向模式下设备的实际视图方向

我的问题是双重的:

  1. 为什么第一个视图控制器会向后旋转,而不是第三个?
  2. 当您只希望某些视图自动旋转而不是其他视图时,需要采取哪些措施才能从您的视图中获取正确的行为?

干杯,EP.

编辑:作为奖励之前的最后一招,我完全重写了这个问题,使其更短,更清晰,并希望更有吸引力给出答案.

cocoa-touch objective-c uiviewcontroller uinavigationcontroller device-orientation

30
推荐指数
2
解决办法
1万
查看次数

在iOS 7中强制使用Landscape ViewController

我在纵向模式下有十多个ViewControllers,但无论设备的方向如何,我都需要在横向模式下强制使用一个.

objective-c ios

4
推荐指数
1
解决办法
2757
查看次数