iOS阻止在某些视图中旋转

时间:2011-08-25 19:46:52

标签: iphone ios ipad

我有一个viewcontroller及其视图,仅支持iPad中的横向。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

if (interfaceOrientation == UIInterfaceOrientationPortrait)
    return NO;
else
    return YES;

}

但我有一个电影播放器​​的观点,只需要画像。所以在这个视图中我这样做:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

if (interfaceOrientation == UIInterfaceOrientationPortrait)
    return YES;
else
    return NO;
}

我的问题是,如果我在第一个viewcontroller中将肖像设置为NO,那么我的第二个视图控制器将永远不会旋转为纵向。 secondviewcontroller被添加为第一个的子视图。如何使视图1不旋转为纵向,而使视图2不旋转为横向。这个应用程序是用于演示目的,所以我只是在寻找这个的技术答案。

2 个答案:

答案 0 :(得分:2)

我不相信在添加为子视图时这是可能的。尝试将新视图推送到不可见的UINavigationController堆栈以实现您的目标。当从第一个视图转到第二个视图时,这将起作用,但是当第二个vc弹出时,让第一个视图将后退旋转到其原始位置非常棘手,因为苹果不希望你这样做这个。这是一个非常非常hacky的技巧,强制它回流行:

-(void)viewDidAppear:(BOOL)animated {   
    UIViewController *c = [[UIViewController alloc] init];
    [self presentModalViewController:c animated:NO];
    [self dismissModalViewControllerAnimated:NO];
    [c release];    
}

答案 1 :(得分:0)

当我在过去遇到这个问题时,我已经这样做了:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
   if(mayRotate){
      return YES;
   }else{
      return NO;
   }
}

我认为还有一点,但你应该有这个想法。