使用TTURLAction在Three20中实现更好的NavigationController转换

时间:2012-02-10 10:32:28

标签: iphone objective-c ios xcode three20

我使用以下代码在我的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之间的内容? (我的意思是保持现有NavigationController中的按钮不被触摸)

  3. 感谢。

1 个答案:

答案 0 :(得分:0)

你实际上是动画两次。首先,您告诉three20按[urlAction applyAnimated:YES];应用动画,然后您附加自己的动画。

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

使用[TTNavigator navigator].topController代替self.navigationController来获取将显示网址的控制器可能更为聪明。在某些情况下,这可能会有所不同。