如何从纵向模式自动旋转到横向模式?

Posted

技术标签:

【中文标题】如何从纵向模式自动旋转到横向模式?【英文标题】:How to autorotate from portrait to landscape mode? 【发布时间】:2009-09-17 09:06:47 【问题描述】:

如何在 iPhone 上将图像从纵向模式自动旋转到横向模式?

【问题讨论】:

【参考方案1】:

你必须在你的控制器中实现shouldAutorotateToInterfaceOrientation 方法,像这样

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    return YES;

【讨论】:

【参考方案2】:

对视图应用适当的变换并调整其框架边界

在我的应用中,我是这样做的(很可能不是最好的):

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration: 0.5f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(-M_PI/2);
self.view.bounds = CGRectMake(0.0f, 0.0f, 480.0f, 320.0f);

self.view.center = CGPointMake(160.0f, 240.0f);
[UIView commitAnimations];

【讨论】:

注:这曾经是正确的,但不再需要(Apple 更改了 API 的工作方式,以便这些事情自动发生)【参考方案3】:

如果要显示新的不同视图,最简单最干净的解决方案是推送一个仅支持横向模式的新视图控制器(presentModalViewController)(在 shouldAutorotateToInterfaceOrientation 中:)。

【讨论】:

– shouldAutorotateToInterfaceOrientation:在 ios 6.0 中已弃用。见this。

以上是关于如何从纵向模式自动旋转到横向模式?的主要内容,如果未能解决你的问题,请参考以下文章

从纵向模式旋转到横向模式时,搜索栏会丢失 FirstResponder

即使纵向模式被锁定,Android 应用程序也会自动旋转到横向模式几秒钟

从纵向模式旋转到横向模式时不调整子视图

横向和纵向模式的自动布局不同的约束

UITableView 在从纵向旋转到横向再回到纵向时会更改大小

从纵向旋转到横向时,iPad 布局会放大