iOS首先自动旋转视图

Posted

技术标签:

【中文标题】iOS首先自动旋转视图【英文标题】:iOS Auto rotation of view at first 【发布时间】:2013-02-15 17:08:53 【问题描述】:

我正在开发一个 ios 应用程序,该应用程序必须在横向和纵向模式下工作,除了一个视图,它应该始终处于横向模式。所以,我有:

-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

    return (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);

如果我在横向模式下午餐我的应用程序,并进入此视图并旋转设备 (iPad),则调用此方法并返回 false,因此界面不会旋转,好东西。

但是,如果我处于纵向并进入此视图,则会调用此方法并返回 false,但是方向不会改变。在这种情况下,如果我将设备旋转为横向,该方法返回 true 并且界面正确旋转,如果我尝试再次旋转为纵向,该方法返回 false 并且界面保持横向。

如何在我第一次进入该视图时实现,如果设备是纵向的,界面会变为横向?

另外,我尝试了

- (NSUInteger)supportedInterfaceOrientations

但它永远不会被调用。

提前致谢!

【问题讨论】:

【参考方案1】:

shouldAutorotateToInterfaceOrientation: 在 iOS 6.0 中已弃用。请改写 supportedInterfaceOrientationspreferredInterfaceOrientationForPresentation 方法。

来自preferredInterfaceOrientationForPresentation上的文档

如果你的视图控制器实现了这个方法,那么当出现时, 它的视图以首选方向显示(尽管稍后可以 旋转到另一个支持的旋转)。如果不实施 这种方法,系统使用当前的视图控制器呈现 状态栏的方向。

【讨论】:

对不起,我没有很好地解释自己。我在 iOS 5 设备上运行我的应用程序,每次显示我只想以横向显示的视图时,都会调用方法 shouldAutorotateToInterfaceOrientation,但如果我是纵向的,尽管它返回 NO,但视图会以纵向显示。如果我旋转到横向,那么它返回 YES 并且视图被旋转,如果我再次旋转到纵向,它返回 NO 并且视图保持应有的横向。我的问题是第一次,当方法返回 NO 时,我需要将视图旋转到纵向而不是保持纵向。

以上是关于iOS首先自动旋转视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS 无法在设备旋转时自动调整子视图大小

iOS:禁用子视图的自动旋转

iOS 6.1 中用于自定义相机视图的自动旋转

iOS - viewController 包含和自动旋转

为啥 iOS 不自动旋转从 Nib 加载的视图在被 didReceiveMemoryWarning 释放后?

ios6中的自动旋转没有按预期工作