35

pushViewControllerアニメーションを表示することは可能ですpresentModalViewControllerが、バックグラウンド機能はありpushViewControllerますか?

4

5 に答える 5

57

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

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];
于 2011-03-27T22:47:12.307 に答える
49

これを試して :

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];
于 2010-10-20T12:04:34.720 に答える
24

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

プッシュ

 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 つ問題があります。それは、ディスプレイが上下するときに明るい黒い背景が表示される
ことです。その作業が完了したらすぐに、ここに新しいコードを投稿してください。

于 2015-03-23T12:30:46.223 に答える
0

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

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 でアニメーション ブロックを実行する必要があります。

于 2010-10-05T15:29:49.670 に答える