web-dev-qa-db-ja.com

addSubViewで左から右へのアニメーション(遷移)からスライドインを追加

NavigationViewControllerのデフォルトのMailAppに非常に似ているiPhoneを模倣しようとしています。

メールの要約をクリックすると、スライドインメールの詳細が表示され、[〜#〜] back [〜#〜]ボタンをクリックすると、メールの要約ビューが表示されます。 スライドインに戻ります。

これは、概要から詳細への移行をアニメーション化するために必要なものです(removeFromSuperView

CGRect temp = self.view.frame;
temp.Origin.x = 300;
[UIView animateWithDuration:0.5
                      delay:0.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     self.view.frame = temp;
                 }completion:^(BOOL finished){
                     [self.view removeFromSuperview];
                 }];

これは、詳細から要約への遷移をアニメーション化するために必要なものです(addSubview

    CATransition *transition = [CATransition animation];
    transition.duration = 0.5;
    transition.type = kCATransitionFromRight;
    transition.subtype = kCATransitionFade;
    [parentView.layer addAnimation:transition forKey:nil];
    [parentView addSubview:myVC.view];

さて、コードの最初の部分はうまく機能しています! 2番目の部分として、フェードインアニメーションを実現することができます。スライドの切り替えを行うにはどうすればよいですか?

16

kCATransitionPushCATransitionタイプを選択するだけです

    CATransition *transition = [CATransition animation];
    transition.duration = 0.5;
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromLeft;
    [transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [parentView.layer addAnimation:transition forKey:nil];

    [parentView addSubview:myVC.view];

Swiftの更新:

    let transition = CATransition()
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromLeft
    parentView.layer.add(transition, forKey: nil)
    parentView.addSubview(myVC.view)
59

またはチェックアウトすることができます:Horizo​​ntalSlide Segue(モバイルでリンクを取得できません).

サイドノートでは、これがナビゲーションコントローラーにある場合、プッシュまたはポップにはデフォルトでスライドアニメーションが必要です...

0
Andy