3

我希望在 TTNavigator 中实现 CATransitions,我知道 openURL 方法可以采用 UIViewAnimationTransition 但这只会给我翻转和卷曲动画,但是使用 CATransition 我可以访问另外 8 个,其中 kCATransitionFromRight、kCATransitionFromLeft、kCATransitionFromTop、kCATransitionFromBottom 是那些我特意追求。

使用 UINavigationController 会使用类似这段代码的代码来让我更好地控制动画:

    CATransition *transition = [CATransition animation];
    transition.duration = 0.5f;
    transition.timingFunction = [CAMediaTimingFunction
    functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    [self.navigationController.view.layer addAnimation:transition
    forKey:nil];

但是,此代码不适用于 TTNavigator。有人知道我如何让我自己的自定义动画与 TTNavigator 一起使用吗?或者如果我在我的代码中做错了什么?

4

2 回答 2

6

原来我回答了我自己的问题,但我没有使用最后一行代码在 navigationController 上设置动画,而是尝试将转换设置为 URLAction。一旦我将该行放回并注释掉 URLAction 转换代码,它似乎就可以工作了!

    // create the URLAction
TTURLAction* urlAction;
urlAction = [TTURLAction actionWithURLPath:@"tt://Images"]; 
[urlAction applyAnimated:YES];

    // create the CATransition and set it to the navigation controller
CATransition *transition = [CATransition animation];
transition.duration = 0.5f;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
[self.navigationController.view.layer addAnimation:transition
forKey:nil]; 

    // tell the navigator to run the action
[[TTNavigator navigator] openURLAction:urlAction];

希望这对将来的其他人有所帮助!

于 2010-08-23T08:56:12.207 回答
1

您可以使用 TTLauncherView 在 TTNavigator 上轻松添加翻转或任何其他类型的动画,如下所示:

- (void)launcherView:(TTLauncherView*)launcher didSelectItem:(TTLauncherItem*)item {
    TTURLAction* action = [TTURLAction actionWithURLPath:item.URL];
    [action setAnimated:YES];
    [action setTransition:UIViewAnimationTransitionFlipFromLeft];
    [[TTNavigator navigator] openURLAction:action];
}

这使得 TTNavigator 在显示新 URL 时使用动画过渡。

于 2011-02-03T17:45:30.283 回答