iPhone:只有横向和纵向视图的应用程序

时间:2010-11-18 22:40:26

标签: iphone objective-c orientation landscape portrait

我正在构建一个具有由RootViewController控制的多个UIViewControllers的应用程序。目前在plist中,应用程序默认为LandscapeRight。

假设我有以下可以加载到RootViewController中的文件:

  1. IntroView(仅适用于风景)
  2. LandscapeView(仅适用于风景)
  3. PortraitView(仅限人像)
  4. 我还在RootViewController的shouldAutorotateToInterfaceOrientation中添加了以下内容:

    -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    if ([currentClass class] == PortraitView.class) {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    
    } else {
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
    

    }

    所以一切顺利,直到我加载到PortraitView并在viewWillAppear中添加以下内容(类似于this thread

    if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { //UIInterfaceOrientationLandscapeRight) {      
    
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
        self.view.bounds = CGRectMake(0.0, 0.0, 320, 480);
        self.view.center = CGPointMake(240.0f, 160.0f);
    
    }
    
    
    [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
    

    这会产生一个正确加载的PortraitView但现在我的问题是在我的PortraitView中我有2个子视图我想翻转,但因为我旋转了我的视图UIViewAnimationTransitionFlipFromLeft实际上使它从上到下翻转而不是从左到右。我不能为我的生活弄清楚如何告诉PortraitView它的肖像。

    当我检查[[UIDevice currentDevice] orientation]时;它告诉我它在景观中。当我尝试使用shouldAutorotateToInterfaceOrientation并将其设置为Portrait时,它将旋转我的视图,使其不再正确。

    希望这是有道理的!一直在看这个问题。

    谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到的情况略有不同;横向模式下的UIViewController子类,从上到下而不是从左到右交换。

对我有用的修复方法是将我的所有观看次数添加到单个“内部”视图中,然后将其翻转而不是UIViewController的正常view

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                           forView:[self innerView]
                             cache:YES];

其中[self innerView][self view]的唯一子项,并且所有子视图都位于其中。