我有一个应用程序在视图控制器中使用纵向模式,除了一个,一个页面只需要横向(横向左侧或横向右侧)。我怎样才能做到这一点? 我尝试了多种解决方案,即设置导航栏的方向模式,应用程序将转向但不幸的是,这对我不起作用。此外,我尝试手动旋转视图,它工作,但当我单击文本字段在其中写入内容时,键盘显示在纵向模式而不是横向模式。
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
上面的代码对我有用,但只有当我允许应用程序以横向和纵向旋转时,这不是我想要的,因为这样所有页面都可以从纵向转为横向。
编辑:
我的情况是,我被分配了一个已经制作的项目。制作这个应用程序的人一直在使用STNavigation Manager(我不确定那是什么)而不是self.navigationController push和pop作为东西。所以shouldAutoRotate和这些代表在我的应用程序中不起作用。其次,他还禁用了navigationBar并创建了自己的NavigationBar。
答案 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。