使一个特定类别的视图控制器在标签栏应用程序中自动旋转,但强制所有其他类视图控制器保持纵向

时间:2011-01-21 04:05:58

标签: iphone uiviewcontroller autorotate

我有一个带有此代码的标签栏控制器

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    //NSLog(@"object type %@"  ,nil);
    if([[self navigationController ] isKindOfClass:[UINavigationController class]])
        if([[[self navigationController] visibleViewController] isKindOfClass:[SLImageViewController class]])
            return YES;
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

我需要旋转SLImageViewController类的任何实例,但不需要其他任何实例。我已经做了我能想到的所有事情,比如在我的SLImageViewController和其他修复程序中添加return YES。

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:3)

您可以通过以下方式完成此任务:

  1. 将statusBar方向设置为viewWillAppearviewWillDisappear
  2. -(void) viewWillAppear:(BOOL)animated { [super viewWillAppear: animated]; [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight]; }

    -(void) viewWillDisappear:(BOOL)animated { [super viewWillDisappear: animated]; [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait]; }

    并手动旋转视图:self.view.transform = CGAffineTransformMakeRotation(M_PI/2);

    1. 显示该视图modaly将触发shouldAutorotateToInterfaceOrientation方法