在Three20中使用TTURLAction更好地导航控制器转换

我正在使用下面的代码来切换我的Three20应用程序中的控制器

TTURLAction * urlAction = [TTURLAction actionWithURLPath:url]; [urlAction applyAnimated:YES]; CATransition * transition = [CATransition animation]; transition.duration = 0.4f; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionReveal; transition.subtype = kCATransitionFromRight; [self.navigationController.view.layer addAnimation:transition forKey:nil]; [[TTNavigator navigator] openURLAction:urlAction]; 

但是这个转换是奇怪的,并且不像默认的Three20转换那样平滑,例如从TTTableViewController移动到TTViewController

  1. 任何人都可以提供更好的代码来实现更平滑的过渡?

  2. 是否有可能只通过NavigationController和TabBar之间的内容? (我的意思是保持button在现有的NavigationController未触及)

谢谢。

你实际上是animation两次。 首先通过[urlAction applyAnimated:YES];告诉three20应用animation[urlAction applyAnimated:YES]; 然后你附上你自己的animation。

删除applyAnimated:它工作得很好。 在iOS5模拟器和设备上使用Three20 1.0.11进行testing。

使用[TTNavigator navigator].topController而不是self.navigationController来获取将显示url的控制器可能是聪明的。 在某些情况下,这可能是不同的。