3

正如长标题所暗示的那样,我最近一直在为 IOS 6 Orientations 苦苦挣扎。我正在处理一个仅基于 iPhone 的当前项目,几乎所有的视图控制器都只支持纵向(默认方向)。我有这个视图控制器虽然我想给多个方向作为唯一的一个,独立的。我该如何正确地做到这一点?这是我的方法。干杯'

在设置中 - 选择除了纵向底部向上之外的所有方向。

  • 在我想给出多个方向的 Viewcontroller 中-嵌入了此代码

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

对于其余的视图控制器 - 支持一个方向(默认方向)纵向:

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

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

任何帮助将不胜感激。

4

4 回答 4

2

您可以阅读以下内容:

多个方向

这就是我所做的:

在所有视图控制器中:

#pragma mark Orientation handling

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

    -(BOOL)shouldAutorotate
    {
        return YES;
    }

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

唯一的视图控制器:

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

希望这可以帮助..

于 2013-06-07T16:34:14.137 回答
0

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

于 2013-06-08T07:04:51.407 回答
0

您需要为UINavigationController要以纵向显示的视图创建一个子类。从 iOS 6 开始,视图控制器只查看父控制器或根控制器进行旋转处理,而不是查看您在描述中所做的视图控制器本身。

在导航控制器 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;
}

只允许在一个视图控制器上自动旋转

于 2014-06-30T09:45:17.293 回答
0

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

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
于 2014-02-07T13:44:02.843 回答