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

在iOS 8中的纵向锁定应用程序中将单个视图旋转为横向,ios,objective-c,iphone,ios8,orientation,Ios,Objective C,Iphone,Ios8,Orientation,我有一个应用程序在视图控制器中使用纵向模式,除了一个,一个页面只需要横向(横向左侧或横向右侧)。我怎样才能做到这一点? 我尝试了多种解决方案,如设置导航栏的方向模式,应用程序将启动,但不幸的是,这对我不起作用。我还尝试手动旋转视图,但当我单击文本字段在其中写入内容时,键盘显示为纵向模式,而不是横向模式 NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight]; [[UIDevice curren

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

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
上面的代码对我来说很有用,但只有当我允许应用程序在横向和纵向两种方向旋转时,但这不是我想要的,因为这样所有页面都可以从纵向变成横向

编辑:


我在这里的情况是,我被分配了一个已经完成的项目。制作此应用程序的人使用的是STNavigation Manager(我不太清楚这是什么),而不是self.navigationController push and pop。所以应该自动旋转,而这些代理不在我的应用程序中工作。其次,他还禁用了导航栏并创建了自己的导航栏。

使用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;

}

如果在应用程序中启用所需的横向模式,则可以使用正在使用的代码强制应用程序进入所需的横向模式,然后在返回到所需的纵向屏幕之前强制应用程序返回纵向

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

-(BOOL)shouldAutoRotate

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

我这样做了,但正如我在问题中所说的,这会旋转屏幕,但当单击文本字段写入时,键盘会以纵向模式显示,而不是横向视图。没错。但让我向你解释一下我的情况,我被分配了一个已经完成的项目。制作此应用程序的人使用的是stNavigationManager(我不太清楚这是什么),而不是self.navigationController推送和弹出。所以shoudAutoRotate和这些代理不在我的应用程序中工作。其次,他还禁用了导航栏并创建了自己的导航栏。啊,我明白了,我想你将无法实现你想要的目标。您应该仍然能够在导航控制器上设置旋转属性,或者在每个返回false的视图控制器上实现该方法。我想我必须通过GAOfflineTransform将键盘保持在纵向模式,将视图保持在横向模式,因为我看不到解决此问题的其他解决方案:\n如果您认为这是一个有效的问题,请对我的问题进行投票提问,这样我至少可以获得足够的声誉,以胜过其他问题和答案。