是否可以显示pushViewController
动画外观presentModalViewController
但具有背景功能pushViewController
?
问问题
43567 次
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
为了显示 PushViewController 动画,下面的代码正在工作,
推送_
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];
对于流行音乐
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];
但是有一个问题,它在上升/下降时显示浅黑色背景,正在处理
这个问题,一旦它在此处发布新代码。
于 2015-03-23T12:30:46.223 回答
1
对于所有在 Xamarin (C#) 中尝试的等效代码,来自上面@hardik Thakkar 的答案,在动画过程中有黑色背景的问题,一切都好。
流行音乐
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));
于 2018-10-24T05:29:11.630 回答
0
您应该考虑执行以下操作:
ViewController *myVC = [[ViewController alloc] initWithFrame:OFF_SCREEN];
[navigationController pushViewController:myVC animated:NO];
其中 OFF_SCREEN 是屏幕下方的某个 CGRect,例如 (0, 481, 320, 480)。然后使用动画块将viewcontroller的view的frame.origin调整为(0, 0)。您可能希望在 viewDidLoad 或 viewDidAppear 中执行动画块。
于 2010-10-05T15:29:49.670 回答