iOS6模拟器中的顶部主页按钮纵向方向无法正常工作

时间:2012-09-19 22:13:35

标签: ios6 xcode4.5

几分钟前我设置了XCode 4.5和iOS6模拟器。 我的应用支持iPhone的所有 4 方向, 肖像底部和顶部主页按钮,左右横向。

好吧,我把它放到.plist中,因为它是iOS6所要求的,旧的shouldRotateTo ...方法仍然在那里返回YES。

但是在模拟器中,应用程序旋转到纵向顶部主页按钮。

为什么呢?这是出于目的吗?它能在设备上正常工作吗?

感谢。

4 个答案:

答案 0 :(得分:18)

行, 我现在自己找到了答案。

是不够的
- (BOOL)shouldAutorotate {

    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskAll;
}

在您的ViewController中,如果它被推入UINavigationViewControllerUINavigationViewController也必须有这些方法。 您最好通过UINavigationViewController上的小类别来实现此目的。

这是我的UINavigationController-Rotation.h

@interface UINavigationController (Rotation)
@end

和我的UINavigationController-Rotation.m:

#import "UINavigationController-Rotation.h"

@implementation UINavigationController (Rotation)

#pragma From UINavigationController

- (BOOL)shouldAutorotate {

    BOOL result = self.topViewController.shouldAutorotate;

    return result;
}

- (NSUInteger)supportedInterfaceOrientations {

    NSUInteger result = self.topViewController.supportedInterfaceOrientations;

    return result;
}

#pragma -

@end

感谢您的帮助!

答案 1 :(得分:2)

iPhone上iOS6的默认行为是没有颠倒的方向。

from UIViewController Class Reference: The default values for a view controller’s supported interface orientations is set to UIInterfaceOrientationMaskAll for the iPad idiom and UIInterfaceOrientationMaskAllButUpsideDown for the iPhone idiom.

您也可以在Safari或地图中看到此行为。

我尝试用UIInterfaceOrientationMaskAll覆盖它,就像Dean说的那样,但没有效果。 我决定不再使用颠倒模式,因为它是一种用户界面指南,我喜欢遵循它而不是混淆用户。

答案 2 :(得分:1)

我认为你的viewControllers将返回默认值,但这些默认值都是颠倒的。你需要实现:

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

对于所有想要支持所有方向的viewControllers。

答案 3 :(得分:0)

如果其他人在遵循Christoh的回答后仍然有问题:

我刚注意到plist项目有单独的iPad和iPhone条目(支持的界面方向(iPad)和支持的界面方向(iPhone))。

希望有所帮助。