开发者

Handling Device orientation problem for swapped views

i'm doing an ipad application, in which i have say two views mainview and aboutus view on startup i put the mainview in the rootcontroller's view (the one that is added to the window) alone. and there's a button on mainview, that, when pressed, will remove the mainview from superview and put the aboutusview instead. aboutus has a similar button that gets us back to mainview.

Now the problem lies in the rotation (orientation). when i detect an orientation change, i update the displayed view. works fine. (fo开发者_运维问答r mainview and aboutusview) But if i rotate once any view, and then then try to see the second view. it seems that the second view is not autosizing.

CODE in rootViewController:

- (void)viewDidLoad
{
    [super viewDidLoad];
 _currentOrientation=UIDeviceOrientationPortrait;
 [self.view addSubview:_mainView];
 [_splashView removeFromSuperview];
}

-(void)viewDidAppear:(BOOL)animated
{
 _currentView = _mainView;
}

-(void)toggleMainPage
{
 [UIView beginAnimations:nil context:nil];
 [UIView setAnimationDuration:.5];
 [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:[self view] cache:YES];
 [_infoView removeFromSuperview];
 [self.view addSubview:_mainView];
 _currentView=_mainView;
 [self transformViewAccordingToOrientation:_currentOrientation];
 [UIView commitAnimations];

}

-(void)toggleAboutPage
{
 [UIView beginAnimations:nil context:nil];
 [UIView setAnimationDuration:.5];
 [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:[self view] cache:YES];
 [_mainView removeFromSuperview];
 [self.view addSubview:_infoView];
 _currentView=_infoView;
 [self transformViewAccordingToOrientation:_currentOrientation];
 [UIView commitAnimations];
}

-(void) transformViewAccordingToOrientation:(UIDeviceOrientation)toInterfaceOrientation
{
 if(toInterfaceOrientation == UIDeviceOrientationPortrait)
 {
  [_mainBtnCustom setBackgroundImage:[UIImage imageNamed:@"main.png"] forState:UIControlStateNormal];
  _infoImage.image =  [UIImage imageNamed:@"about.png"];

 }else
 {

  [_mainBtnCustom setBackgroundImage:[UIImage imageNamed:@"mainr.png"] forState:UIControlStateNormal];
  _infoImage.image =  [UIImage imageNamed:@"aboutr.png"];
 }
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
 [self transformViewAccordingToOrientation:toInterfaceOrientation];
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
 _currentOrientation = [UIDevice currentDevice].orientation;
 [self transformViewAccordingToOrientation:_currentOrientation];
}


// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
 return (_currentOrientation !=interfaceOrientation);
}

what am i doing wrong?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜