如何使应用程序完全在iOS 6中正常工作的自动旋转?(How to make app fully w

2019-06-18 09:49发布

在iOS6的, shouldAutorotateToInterfaceOrientation已被弃用。 我试图用supportedInterfaceOrientationsshouldAutorotate使应用正常工作的自动旋转,但是失败了。

这个视图控制器我不想旋转,但它不工作。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

有任何想法吗? 感谢提前任何帮助!

Answer 1:

弄清楚了。

1)子类的UINavigationController(层次结构的顶部视图-控制将采取定向的控制。)没有将其设置为self.window.rootViewController。

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return self.topViewController.supportedInterfaceOrientations;
}

2)如果你不想视图控制器旋转

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

3)如果你希望它能够旋转

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

顺便说一句,根据您的需要,另一个相关方法:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
     return UIInterfaceOrientationMaskPortrait;
}


Answer 2:

如果您使用的是标签栏控制器,而不是导航控制器为你的根器,你需要同样继承的UITabBarController。

另外,语法会有所不同。 我成功地使用以下。 然后我用上述实施例与上视图控制器我想重写成功。 在我的情况,我想主屏幕不旋转,但我有一个常见问题与屏幕电影,我自然要启用横向视图。 非常完美! 只要注意语法变化self.modalViewController(你会得到一个编译器,如果你尝试使用语法导航控制器警告。)希望这有助于!

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotate
{
    return self.modalViewController.shouldAutorotate;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return self.modalViewController.supportedInterfaceOrientations;
}


文章来源: How to make app fully working correctly for autorotation in iOS 6?