我得到了一个由不再在这里工作的人启动的项目。 我有一个UITabBarController,它包含一些UIViewControllers。 如果应用程序在iOS 6上运行,一切运行正常,但是只要我在iOS 5上运行它,所有UIViews都会旋转90度,并且原点值大约为-100到-300
我已经能够遍历tabBar的所有视图控制器并设置
myView.transform = CGAffineTransformMakeRotation(0.0);
myView setFrame:CGRectMake(0,0,1024,748);
UITabBarController上的初始视图控制器正确显示,但是,如果我尝试启动模态视图控制器,则会再次填充所有内容。包括模态。
关于如何一劳永逸地解决这个问题,我的想法已经不多了。我无法在旋转视图的代码中找到任何内容。
我能推断的是 在iOS 6上,持有UITabBarController的主视图的第一个子视图是UILayoutContainerView 但在iOS 5上,第一个子视图是UIView类
如果这是iOS5中不支持UILayoutContainerView的问题,我该如何使应用程序向后兼容?
注意:我们只支持横向(右/左),仅支持iPad。 另外,我注意到如果用户在初始化UITabBarController及其子控制器之前旋转应用程序。一切正常。即使您重新运行应用程序而不是再次旋转,仍然有效。
提前致谢
答案 0 :(得分:0)
如果您希望您的应用程序坚持横向模式,您可以使用版本代码,问题出在iOS 5中,很多人都面临这个问题
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
BOOL returningValue=NO;
if (interfaceOrientation==UIInterfaceOrientationIsPortrait(interfaceOrientation))
{
returningValue=NO;
}
else if(UIInterfaceOrientationIsLandscape(interfaceOrientation))
{
returningValue=YES;
}
return returningValue;
}
答案 1 :(得分:0)
显然,这是我出错的地方
适用于iOS 5 在设置应用程序主窗口的视图时,必须使用
[self.window addSubview: tabBarController.view];
而不是(仅限iOS6)
[self.window setRootViewController: tabBarController];
我不确定这会如何改变一切,以及它不适用于iOS 5的原因。尽管如此,它仍然有效。 谢谢大家:)