【发布时间】:2011-04-19 18:55:25
【问题描述】:
是否可以显示pushViewController 动画看起来像presentModalViewController 但具有pushViewController 的背景功能?
【问题讨论】:
标签: ios iphone animation pushviewcontroller presentmodalviewcontroller
是否可以显示pushViewController 动画看起来像presentModalViewController 但具有pushViewController 的背景功能?
【问题讨论】:
标签: ios iphone animation pushviewcontroller presentmodalviewcontroller
您应该考虑执行以下操作:
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 中制作动画块。
【讨论】:
initWithFrame: 初始化器
试试这个:
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];
【讨论】:
如果你想淡化动画,这种方法很有效。
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];
【讨论】:
为了将 PushViewControler 动画显示为 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 个问题,即它在上升/下降时显示浅黑色背景,
正在为此工作,一旦完成,请在此处发布新代码。
【讨论】:
for (UIView *view in self.view.subviews) { view.backgroundColor = someColor }
适用于 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));
【讨论】: