IOS 6方向 - 只有一个ViewController支持Landscape&纵向 - 否则只有肖像

时间:2013-06-07 16:04:01

标签: ios xcode uiviewcontroller orientation

由于Long标题表明我最近一直在与IOS 6 Orientations斗争。 我正在开发一个仅基于iPhone的当前项目,几乎所有的viewcontrollers都只支持纵向(默认方向)。 我有一个viewcontroller虽然我想给多个方向作为唯一的方向,独立。我该怎么做呢?这是我的方法。干杯

在“设置”中 - 选择除肖像底部向上以外的所有方向。

  • 在Viewcontroller中,我想给出多个方向 - 这个代码是嵌入的

    -(NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskAllButUpsideDown;
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        return UIInterfaceOrientationPortrait;
    }
    
    -(BOOL)shouldAutorotate
    {
        return YES;
    }
    

对于其余的viewcontollers - 支持一个方向(默认方向)肖像:

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

它不起作用。看起来似乎没有调用方法 - 但是项目和构建只是坚持设置中的选定方向。为什么这不起作用!!

任何帮助都将深表感谢。

4 个答案:

答案 0 :(得分:2)

您可以阅读:

Multiple Orientations

这就是我的所作所为:

在所有viewcontrollers中:

#pragma mark Orientation handling

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

    -(BOOL)shouldAutorotate
    {
        return YES;
    }

    -(NSUInteger)supportedInterfaceOrientations
    {
        return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
    }

唯一的viewcontroller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}

希望这会有所帮助..

答案 1 :(得分:0)

试试这个[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];您需要在构建阶段为此文件设置-fno-objc-arc

答案 2 :(得分:0)

-supportedInterfaceOrientations应该返回一个掩码,在你的情况下:

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

答案 3 :(得分:0)

您需要为要以纵向显示的视图创建UINavigationController子类。从iOS 6开始,视图控制器只查看父控制器或根控制器,以便轮换处理而不是您从描述中执行的视图控制器本身。

在navcontroller subclass.m中:

// Older versions of iOS (deprecated) if supporting iOS < 5
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation    {
return UIInterfaceOrientationIsPortrait(toInterfaceOrientation);
}

// >iOS6
 - (BOOL)shouldAutorotate {
return YES;
 }

 // >iOS6
 - (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}

Allow autorotation on just one view controller