在iOS 8中的纵向锁定应用程序中将单个视图旋转为横向

时间:2015-03-26 09:51:48

标签: ios objective-c iphone ios8 orientation

我有一个应用程序在视图控制器中使用纵向模式,除了一个,一个页面只需要横向(横向左侧或横向右侧)。我怎样才能做到这一点? 我尝试了多种解决方案,即设置导航栏的方向模式,应用程序将转向但不幸的是,这对我不起作用。此外,我尝试手动旋转视图,它工作,但当我单击文本字段在其中写入内容时,键盘显示在纵向模式而不是横向模式。

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];

上面的代码对我有用,但只有当我允许应用程序以横向和纵向旋转时,这不是我想要的,因为这样所有页面都可以从纵向转为横向。

编辑:

我的情况是,我被分配了一个已经制作的项目。制作这个应用程序的人一直在使用STNavigation Manager(我不确定那是什么)而不是self.navigationController push和pop作为东西。所以shouldAutoRotate和这些代表在我的应用程序中不起作用。其次,他还禁用了navigationBar并创建了自己的NavigationBar。

2 个答案:

答案 0 :(得分:0)

使用UIView的transform属性进行旋转:

-(void)viewWillAppear:(BOOL)animated
{
CGAffineTransform newTransform = CGAffineTransformMake(0.0,1.0,-1.0,0.0,0.0,0.0);         
self.view.transform = newTransform;

}

答案 1 :(得分:0)

如果您在应用程序中启用了所需的横向模式,则可以使用您正在使用的代码强制应用程序进入所需的横向模式,然后在返回到您想要的屏幕之前将其强制恢复为纵向是肖像。

我发现最好的方法是创建一个UINavigationController的子类,它不允许通过

旋转
-(BOOL)shouldAutoRotate

然后在一个视图中,我希望在VC级别上实现相同方法的landscape返回true。