横向和纵向视图中的旋转问题

时间:2011-10-17 11:02:52

标签: iphone objective-c ios

在我的应用程序中,我有2个视图,portraitView和landScapeView。我的申请也有很多观点......

  1. 当我启动应用程序时,横向和纵向视图会并排显示。

  2. 当我在landscapeview中启动应用程序时,肖像视图会显示出来......旋转后回来,视图正常运行。

  3. 我正在使用的代码如下所示......所以请告诉我应该采取哪些措施来克服上述问题。

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    
    { 
    
    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {  
        NSLog(@"LANDSCAPE>>");
        portraitView.hidden = YES;
        landscapeView.hidden = NO;
    
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"bg-ic_landscape.jpg"]];
        self.view.backgroundColor = background;
    
    
    
    }
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight){
        NSLog(@"LANDSCAPE<<");
        portraitView.hidden = YES;
        landscapeView.hidden = NO;
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"bg-ic_landscape.jpg"]];
        self.view.backgroundColor = background;
    
        self.view.hidden = NO;
    
    }
    else{
        portraitView.hidden = NO;
        landscapeView.hidden = YES;
    
    
        NSLog(@"Portrait");
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"bg-ic.jpg"]];
        self.view.backgroundColor = background;
    
        background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"bg-ic2.jpg"]];
      self.view.backgroundColor = background;
    
    }
    
    return YES;
    

2 个答案:

答案 0 :(得分:1)

系统调用shouldAutorotateToInterfaceOrientation这一事实并不意味着它会在那时再这样做。您希望使用willRotateToInterfaceOrientation和didRotateFromInterfaceOrientation,并尽可能使用自动调整大小。您还可以对布局更新回调进行子类化以重新排列视图。不推荐使用两个视图并显示/隐藏它们用于横向/纵向。

答案 1 :(得分:1)

听起来你的portraitView和landscapeView在应用程序的首次启动时都可见。上述代码仅在运行时更改时执行。如果您坚持使用纵向和横向的单独视图,那么您还需要在启动时检测方向并适当地显示/隐藏视图。