两个根演示文稿之间的 MvvmCross v5 动画
Posted
技术标签:
【中文标题】两个根演示文稿之间的 MvvmCross v5 动画【英文标题】:MvvmCross v5 animation between two root presentations 【发布时间】:2017-05-17 10:44:40 【问题描述】:我有两个用 MvxRootPresentation
属性标记的 ios 视图:LoginView
没有包装到导航控制器中,MainView
包装到导航控制器中。
当我调用ShowViewModel<MainViewModel>()
时,这两个视图之间没有动画。所有后续视图都照常进行动画处理(在 NavigationController 中)。
如何为这个过渡设置动画?
【问题讨论】:
请将您的解决方案添加为下面的答案并接受它,而不是将其添加为您自己问题的更新。 完成。我关于***的第一个问题:)。 【参考方案1】:好的,我自己做了 :) 我必须添加我的自定义演示文稿属性和自定义演示者:
public class AnimatedRootPresentationAttribute : MvxRootPresentationAttribute
public class MyPresenter : MvxIosViewPresenter
public MyPresenter(IUIApplicationDelegate appDelegate, UIWindow window)
: base(appDelegate, window)
protected override void RegisterAttributeTypes()
base.RegisterAttributeTypes();
_attributeTypesToShowMethodDictionary.Add(typeof(AnimatedRootPresentationAttribute),
(viewController, attribute, request) => ShowAnimatedRootViewController(
viewController, (AnimatedRootPresentationAttribute)attribute, request));
private void ShowAnimatedRootViewController(
UIViewController viewController,
AnimatedRootPresentationAttribute attribute,
MvxViewModelRequest request)
ShowRootViewController(viewController, attribute, request);
AddAnimation();
private void AddAnimation()
var transition = new CATransition
Duration = 0.2,
Type = CAAnimation.TransitionMoveIn,
Subtype = CAAnimation.TransitionFromTop
;
_window.RootViewController.View.Layer.AddAnimation(transition, null);
【讨论】:
谢谢,这帮助我实现了完全相同的行为! 这太棒了。请注意,最新版本将 _attributeTypesToShowMethodDictionary 字典定义为受保护的属性。另请注意,当新的根 VC 包装在导航控制器中时,这会出现常见的动画故障,其中背景在动画时变黑。以上是关于两个根演示文稿之间的 MvvmCross v5 动画的主要内容,如果未能解决你的问题,请参考以下文章