我正在构建一个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];
}
提前致谢!!
期待您的回应。
感谢
答案 0 :(得分:0)
如果不看大局,我无法分辨。检查IB中的帧以查看它们是否正确设置。 这个代码来自你的appDelegate吗? viewController是否在他的视图中显示了一个工具栏?也许您的视图会移动工具栏高度的确切像素?
答案 1 :(得分:0)
知道了。
这是由于IB设置而发生的。所以在IB中你的viewController有一个statusBar,你的视图的高度为460(对于iPhone)而不是480.20点是statusBar高度。转换到第二个视图时,其rect为{0,0,320,460}
,因此视图位于应用程序的statusBar后面,并且您从底部缺少20个点。
要解决这个问题,您需要:
现在,您的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];
}
感谢所有回复的人!!