从第一视图翻转时,第二视图向上移动

时间:2011-02-11 07:24:03

标签: ios4 uiview uiviewcontroller

我正在构建一个ap,我需要从superView中删除当前视图并加载另一个。但新加载的视图向上移动。此外,当再次加载firstView时,它会完全加载。

有没有人可以建议摆脱这个问题。

以下是我用来将视图翻转到secondView

的方法
-(void) flipToBack
{
CreateMessageViewController *oSecondView = [[CreateMessageViewController alloc] initWithNibName:@"CreateMessageViewController" bundle:nil];
[self setMsgViewController:oSecondView];
[oSecondView release];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:window cache:YES];

[viewController.view removeFromSuperview];
[tabBarController.view removeFromSuperview];
[self.window addSubview:[msgViewController view]];
[UIView commitAnimations];
}

提前致谢!!

期待您的回应。

感谢

3 个答案:

答案 0 :(得分:0)

如果不看大局,我无法分辨。检查IB中的帧以查看它们是否正确设置。 这个代码来自你的appDelegate吗? viewController是否在他的视图中显示了一个工具栏?也许您的视图会移动工具栏高度的确切像素?

答案 1 :(得分:0)

知道了。 这是由于IB设置而发生的。所以在IB中你的viewController有一个statusBar,你的视图的高度为460(对于iPhone)而不是480.20点是statusBar高度。转换到第二个视图时,其rect为{0,0,320,460},因此视图位于应用程序的statusBar后面,并且您从底部缺少20个点。

要解决这个问题,您需要:

  1. 进入IB并将CreateMessageViewController的statusBar设置为Unspecified。
  2. 进入视图大小部分,将视图的高度设置为480(对于iPhone)。
  3. 现在,您的CreateMessageViewController视图将正确显示。

答案 2 :(得分:0)

经过很长时间玩代码和IB,我发现了这个bug。它被更正为

打开mainWindow.xib并从库中添加UIViewController对象。将其类更改为处理指定viewController的类,然后单击。转到属性检查器的属性部分,为Controller设置相应的笔尖名称,然后保存并退出IB。

代码变为

-(void) flipToBack
 {
     [UIView beginAnimations:nil context:NULL];
     [UIView setAnimationDuration:0.8];
     [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:window cache:YES];

     [viewController.view removeFromSuperview];
     [tabBarController.view removeFromSuperview];
     [self.window addSubview:[msgViewController view]];
     [UIView commitAnimations];
 }

感谢所有回复的人!!