-3

ナビゲーションベースのアプリケーションを開発しています。このアプリケーションでは、Push Pop 用の特別なアニメーションが必要です。

currentViewController の MoveOut アニメーションと nextViewController の FadeIn アニメーションが必要です。

次のコードを使用しました。firstViewController の MoveOut アニメーションは正常に動作します。しかし、nextViewController の FadeIn アニメーションを取得できません。

- (IBAction)pushClick:(id)sender
{
    SecondViewController * sec = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    CATransition *transitionMainView = [CATransition animation];
    transitionMainView.duration = 0.4;
    transitionMainView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transitionMainView.type = kCATransitionReveal;
    transitionMainView.subtype = kCATransitionFromRight;
    transitionMainView.delegate = self;
    [self.navigationController.view.layer addAnimation:transitionMainView forKey:nil];

    CATransition *transitionSubView = [CATransition animation];
    transitionSubView.duration = 0.4;
    transitionSubView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transitionSubView.type = kCATransitionFade;
    transitionSubView.subtype = kCATransitionFromLeft;
    transitionSubView.delegate = self;
    [sec.view.layer addAnimation:transitionSubView forKey:nil];

    [self.navigationController pushViewController:sec animated:NO];
}

POP の解決策も教えてください。

あなたの知識を共有してください.....

4

1 に答える 1

0

次のコードを使用する必要があります。

SecondViewController * sec = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

   CATransition *transitionMainView = [CATransition animation];
   transitionMainView.duration = 0.4;
   transitionMainView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
   transitionMainView.type = kCATransitionReveal;
   transitionMainView.subtype = kCATransitionFromRight;
   transitionMainView.delegate = self;
   [self.navigationController.view.layer addAnimation:transitionMainView forKey:nil];
   [self.navigationController pushViewController:sec animated:NO];
   sec.view.alpha = 0;

   [UIView beginAnimations:@"animation" context:nil];
   [UIView setAnimationDuration:0.75];
   sec.view.alpha = 1;
   [UIView commitAnimations];
于 2013-05-11T07:19:20.620 に答える