4

CATransitions を使用して、ドリル ダウン時にナビゲーション コントローラーの遷移をアニメーション化できます。ただし、[戻る] ボタンまたはナビゲーション コントローラー (上に戻る) を使用すると、アニメーションはスライドアウトします。CATransition をナビゲーション コントローラーの [戻る] ボタンに取り付ける方法を知っている人はいますか? ありがとう。

「ドリルダウン」時にアニメーション化するために使用されるコード:

CATransition *transition = [CATransition animation];
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromTop;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
4

5 に答える 5

7

カスタムボタンを作成する必要はありません...次のようにするだけです:

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
        // back button was pressed.  We know this is true because self is no longer
        // in the navigation stack.  
        CATransition *transition = [CATransition animation];
        [transition setDuration:0.75];
        [transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        [transition setType:@"oglFlip"];
        [transition setSubtype:kCATransitionFromLeft];
        [transition setDelegate:self];
        [self.navigationController.view.layer addAnimation:transition forKey:nil];
    }

    [super viewWillDisappear:animated];
}

編集: CATransition を使用するには、最初に Quartz フレームワークを追加する必要があります

于 2012-01-18T12:23:08.763 に答える
6

戻るボタンにアニメーションを追加するには、独自の戻るボタンを作成する必要があります。戻るボタンのアクションで、必要なアニメーションを指定します。

  1. ナビゲーションバーに戻るボタンを追加する:この行をviewDidLoadメソッドに追加します。

    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(back)];
    
  2. backメソッドに次のコードを追加します。

    CATransition *transition = [CATransition animation];
    transition.duration = 1;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromBottom;
    transition.delegate = self;
    [self.navigationController.view.layer addAnimation:transition forKey:nil];
    [self.navigationController popViewControllerAnimated:YES];
    
于 2010-12-15T10:56:00.937 に答える
0

質問を理解しているかどうかわかりません。UINavigationControllerビューを切り替えるときに、既にスライド トランジションを使用しています。カスタム トランジションを [戻る] ボタンにアタッチする場合は、カスタムの [戻る] ボタンを作成し、それをCATransitionコードを実行するアクションに接続する必要があります。

于 2010-06-30T04:24:53.397 に答える