web-dev-qa-db-ja.com

presentModalViewControllerのようなpushviewcontrollerアニメーションの表示

pushViewControllerアニメーションをpresentModalViewControllerのように見せることはできますが、pushViewControllerのバックグラウンド機能がありますか?

35
sathish kumar

これを試して :

UIViewController *yourViewController = [[UIViewController alloc]init];

[UIView  beginAnimations: @"Showinfo"context: nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController: yourViewController animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
49
jithinroy

アニメーションをフェードする場合は、このアプローチが有効です。

CATransition* transition = [CATransition animation];
transition.duration = 0.3;
transition.type = kCATransitionFade;
transition.subtype = kCATransitionFromTop;

[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[self.navigationController pushViewController:gridController animated:NO];
56
steipete

以下のコードが機能しているようにPushViewConttrolerアニメーションを表示するには、

プッシュの場合

 ViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
 CATransition* transition = [CATransition animation];
 transition.duration = 0.4f;
 transition.type = kCATransitionMoveIn;
 transition.subtype = kCATransitionFromTop;
 [self.navigationController.view.layer addAnimation:transition
                                                    forKey:kCATransition];
 [self.navigationController pushViewController:VC animated:NO];

[〜#〜] pop [〜#〜]

CATransition* transition = [CATransition animation];
transition.duration = 0.4f;
transition.type = kCATransitionReveal;
transition.subtype = kCATransitionFromBottom;
[self.navigationController.view.layer addAnimation:transition
                                            forKey:kCATransition];
[self.navigationController popViewControllerAnimated:NO];

ただし、1つの問題があります。それは、上下に移動するとディスプレイが明るい黒の背景になり、
それに取り組んで、すぐに新しいコードをここに投稿します。

24
Dilip

上記の@hardik Thakkarによる回答からのXamarin(C#)の同等のコードのすべての試行について、アニメーション中に黒の背景の問題があります。

POPの場合

    CATransition transition = CATransition.CreateAnimation();
    transition.Duration = 0.4;
    transition.Type = CAAnimation.TransitionReveal;
    transition.Subtype = CAAnimation.TransitionFromTop;
    this.NavigationController.View.Layer.AddAnimation(transition, nameof(CATransition));

プッシュ用

    CATransition transition = CATransition.CreateAnimation();
    transition.Duration = 0.4;
    transition.Type = CAAnimation.TransitionReveal;
    transition.Subtype = CAAnimation.TransitionFromBottom;
    this.NavigationController.View.Layer.AddAnimation(transition, nameof(CATransition));
1
soan saini

次のようなことを検討する必要があります。

ViewController *myVC = [[ViewController alloc] initWithFrame:OFF_SCREEN];
[navigationController pushViewController:myVC animated:NO];

ここで、OFF_SCREENは、画面の下の(0、481、320、480)のようなCGRectです。次に、アニメーションブロックを使用して、ViewControllerのビューのframe.Originを(0、0)に調整します。おそらく、viewDidLoadまたはviewDidAppearでアニメーションブロックを実行する必要があります。

0
kevboh