如何解决在应用启动时,界面方向不会更改为横向
|| 我陷入一个使我发疯的问题! 我有一个以TabBarViewController开头的iPad应用程序。每个Tab都有自己的ViewController和nib文件。 为了使界面方向成为可能,我将所有方向都添加到了info.plist并将其TabBarController子类化为设置: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
如果旋转界面,每个视图都会自动调整大小和格式,以显示正确的方向。如果我在模拟器中对其进行测试,那么一切看起来都很好,并且我可以在方向之间旋转。
现在,让我疯狂的一点是:
如果我以纵向模式启动该应用程序,则一切正常..但是,如果我以横向模式启动,则出现错误,并且当模拟器处于横向模式时,我的界面方向仍为纵向!
错误:
2011-05-24 21:50:15.011 Project[57995:207] Using two-stage rotation animation. To use the smoother single-stage animation,this application must remove two-stage method implementations.
我检查了这样的方向:
-(void)viewWillAppear:(BOOL)animated{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight)) {
NSLog(@\"Orientation: Landscape\");
}
else{
NSLog(@\"Orientation: Portrait\");
}
}
日志说如果我在横向模式下启动,它处于“横向”模式,但是如果我将选项卡更改为另一个模式,则看起来很糟糕,因为视图以纵向模式显示。
回到我要求定向的开始视图时,日志显示\“ Portrait \”…,但是模拟器仍然是横向的!
我不知道为什么开始时方向是纵向,…
即使我从风景开始...
任何想法如何解决这个问题?
解决方法
好。因此,文档说“ 3”在所有动画之前都被调用。当您的应用启动时,其初始方向为
Portrait
。根据您的方向,然后旋转到该方向。由于它动画于屏幕外的方向,因此必须在viewWillAppear:
之后调用/,因此当调用viewWillAppear:
时,它仍位于Portrait
中。我自己测试过。
,我解决了问题!
只需在我所有视图的viewWillAppear方法中使用此方法,即可使其在横向模式下启动时起作用:
if(([[UIApplication sharedApplication]statusBarOrientation] == UIInterfaceOrientationLandscapeLeft) || ([[UIApplication sharedApplication]statusBarOrientation] == UIInterfaceOrientationLandscapeRight)){
//Landscape View
}
else{
//Portrait View
}
对我来说很好!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。