1

我有一个在 ios 5 上运行良好的应用程序,我正在尝试升级我的应用程序以在 ios 6 上运行,我已经阅读了大量有关使用 ios 6 方向的问题和教程,

我的问题是当我调用我的 rootViewController 时,它对我的​​工作正常,但是当我推动任何 viewController 时,方向看起来很糟糕,因为我使用方向来更改视图大小(我的应用程序支持任何方向)

这是我的代码:

AppDelegate:


UINavigationController *nav =[ [UINavigationController alloc] initWithRootViewController:theView]  ;
self.window.rootViewController = nav;


- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window  // iOS 6
{

return UIInterfaceOrientationMaskAll;


}




myFirstViewController:

-(NSUInteger)supportedInterfaceOrientations{

return UIInterfaceOrientationMaskAll;
 }

 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{

    [self viewWillAppear:NO];
 }

 -(BOOL)shouldAutorotate{
 return YES;
  }

- (void)viewWillAppear:(BOOL)animated
{

[super viewWillAppear:NO];
if ( [[UIDevice currentDevice].systemVersion floatValue] >= 6.0){
    if (pointRange.location != NSNotFound) {



UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];

if( (interfaceOrientation >= 3)  ) {
     width=1024;
    self.view.frame=CGRectMake(0, 0, 1024, 768);

}


if   ( (interfaceOrientation == 1) || (interfaceOrientation == 2 )) {

    width=768;
    self.view.frame=CGRectMake(0, 0, 768, 1024);


}}
....etc

我在第二个视图中也做了同样的事情,希望能找到原因!!

4

2 回答 2

1

你总是可以像这样对 UINavigationController 进行扩展

@implementation UINavigationController (RotationFix)

-(NSUInteger)supportedInterfaceOrientations
{
    return [self.topViewController supportedInterfaceOrientations];
}

-(BOOL)shouldAutorotate
{
    return YES;
}

@end
于 2013-08-06T07:34:55.517 回答
0

即使我遭受了 2 天的痛苦.. 经历了许多教程、博客、论坛,甚至是苹果文档。

到目前为止,我了解到,在 iOS 6 中,应用程序的每个模板都应该以不同的方式处理。

到目前为止,讨论仅针对基于视图的应用程序,这些更改不适用于基于导航的应用程序或基于 tabBar 的应用程序。

最后我得到了解决方案,就像这样

实现这两种类型的子类UITabBarControllerUINavigationController.

从这个博客知道。感谢 Shabbir 的解决方案。

于 2012-11-01T13:21:36.433 回答