IPhone SDK - 过渡到NavigationController显示问题

时间:2010-03-13 15:58:01

标签: iphone animation sdk

我差不多完成了我的第一个iPhone应用程序,一切正常 - 除了一个很小的显示错误:

我的星标是UIView(全屏),没有导航栏或工具栏。 如果我点击一个开始按钮,会有一个UIViewAnimationTransitionFlipFromRight动画翻转到主导航控制器:

-(IBAction) switchViewToMainMenu {
[UIView beginAnimations:@"Flip View" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:self.window cache:YES];
[self.navController viewWillAppear:YES];
[self.startScreenViewController viewWillDisappear:YES];

[self.startScreenViewController.view removeFromSuperview];  
[self.window addSubview:navController.view];    

[self.startScreenViewController viewDidDisappear:YES];
[self.navController viewDidAppear:YES];
[UIView commitAnimations];
self.startScreenViewController=nil;
[startScreenViewController release];

}

除了一个小问题外,这个工作正常:

当出现导航控制器视图(翻转)时,顶部的导航栏上的某些像素太高(导航栏应该是一个白色条)。动画完成后,导航栏将下降到正确的位置。这看起来不太漂亮......

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我们找到了一个使用setAnimationDelay的解决方案,只需要一些时间来加载tabbar并将其置于视图中。 认为你必须稍微改变代码才能使用setAnimationDelay。 您必须在setanimationtransition之前使用setyanimationdelay,并在commitAnimations之前使用setanimationtransition。所以上面的代码应该结束:

[UIView setAnimationDelay:2]; // 2 seconds delay seems to be working for us  
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:self.window  cache:YES];  
[UIView commitAnimations];