3

私は TTNavigator 内に CATransitions を実装しようとしています。 メソッド openURL が UIViewAnimationTransition を取ることができることは知っていますが、それはフリップとカーリングのアニメーションしか提供しませんが、CATransition を使用すると、別の 8 つにアクセスできます。私は特に後にしています。

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 に答える