iOS 6中 - 导航控制器景观轮作对于一些看法,而其他仅肖像(iOS 6 - Navigation

2019-07-20 06:20发布

我建立一个应用程序,将只对主要观点(包括正常和倒置)的画像。 我在项目设置/ plist中设置此设置,一切工作正常。 但是,我有做的事情一样显示图像/视频数模态的看法,我希望他们能够旋转至所有方向。

我尝试添加了UINavigationController的,但没有运气的类别。 我也加入到调用模式下面的代码中的viewController:

-(BOOL)shouldAutomaticallyForwardAppearanceMethods{
    return NO;
}
-(BOOL)shouldAutomaticallyForwardRotationMethods{
    return NO;
}

我已经添加了下面的代码,我想允许所有方向的模态viewControllers:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

我在想什么? 有什么建议?

Answer 1:

在iOS 6上,旋转处理发生了变化。 对于您所描述的问题,有几种方法。 首先,在plist中,使除人像所有方向颠倒。

然后,你可以使用下面的解决方案之一:

  1. 使用的UINavigationController的一个子类,它仅允许旋转为纵向。
  2. 对于所有控制器指定它们所支持的旋转。
  3. 您可以覆盖在你的应用程序委托的方法。 由于每当方向变化或新的视图控制器推该方法被调用你的委托时,你可以用它来暂时启用您的应用程序/禁用横向显示:

     // In AppDelegate.h: @property (nonatomic) BOOL portraitOnly; // In AppDelegate.m: - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return _portraitOnly ? UIInterfaceOrientationMaskPortrait : UIInterfaceOrientationMaskAllButUpsideDown; } // to switch to portrait only: ((AppDelegate *)[UIApplication sharedApplication].delegate).portraitOnly = YES; // to switch to allowing landscape orientations: ((AppDelegate *)[UIApplication sharedApplication].delegate).portraitOnly = NO; 


Answer 2:

您需要启用旋转对于在层次结构中的祖先在构建设置(为了使VC在层次较低,以能够旋转,如果他们愿意的话)的viewControllers。 然后返回从正确的逻辑shouldAutoRotatesupportedInterfaceOrientationswillAnimateRotationToInterfaceOrientation每个的viewController。

从-return NO shouldAutoRotate对于不动弹的viewControllers。

-and同样,从返回YES shouldAutoRotate并返回有效的方位从VC supportedInterfaceOrientations

-使用willAnimateRotationToInterfaceOrientation做你需要出现新的方向之前做最后一分钟的清理或数据的变化。

随时让我知道,如果你仍然有问题。 希望能帮助到你!



文章来源: iOS 6 - Navigation Controller Landscape Rotations For Some Views While Others Portrait Only