界面方向旋转

3
我正在开发一段代码,其中初始视图控制器是 横屏 视图。当该视图控制器中的一个按钮被按下时,下一个视图控制器应该是 竖屏 模式。我的 根视图控制器 是一个 导航控制器

这是一个故事板应用程序。

我在第一个根视图控制器中返回了 UIInterfaceOrientationLandscapeRight,并在第二个视图控制器中返回了 UIInterfaceOrientationPortrait。但旋转在刚开始时并不起作用。我们必须旋转视图才能更改为正确的方向。

如何解决这个问题?

2个回答

3

改变设备方向的一种方法是...

-(void)viewWillAppear:(BOOL)animated
{
    [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

}

在这里,你需要更改方向的类,然后在你的 viewWillAppear: 方法中编写该行代码。

另外,为了消除 UIDevice 的警告,请在你的 .m 文件中声明下面的代码。

@interface UIDevice (MyPrivateNameThatAppleWouldNeverUseGoesHere)
- (void) setOrientation:(UIInterfaceOrientation)orientation;
@end

这段代码定义在 @implementation 文件上方。 希望这能帮到你... :)

抱歉!但是这显示了错误。错误是自动引用计数问题:接收器类型“UIDevice”的实例消息没有声明具有选择器“setOrientation:”的方法。 - Kiron
谢谢Paras Joshi,那真是太棒了,代码运行得非常好...谢谢。 - Kiron

0

当第二个ViewController被加载时,将此行添加到viewDidLoad或接收方向更改事件的方法中:

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

编辑:

好的,那么请更新您的方法shouldAutorotateToInterfaceOrientation,在您想要以纵向显示的CiewController中,像这样:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

同时确保在nib文件中,你已经在属性检查器中将方向设置为Portrait

这样就可以为您完成工作了。


我添加了这个设备旋转,但视图控制器没有旋转 :( - Kiron
你有检查你的nib文件的方向吗? - Kanan Vora
完成了,Kanan,Parsi的代码起作用了。感谢您的支持和时间。 - Kiron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接