C# Xamarin形成自定义导航转换

C# Xamarin形成自定义导航转换,c#,xamarin,xamarin.ios,xamarin.forms,C#,Xamarin,Xamarin.ios,Xamarin.forms,我知道以前有人问过这个问题,但大多数都是一年多以前的问题,我想知道这个问题是否仍然存在 Xamarin表单是否仍然不支持自定义导航页面转换 我知道可以在本机应用程序中很好地制作动画,但根据我的研究,Xamarin Forms需要自定义渲染器或包来完成简单的自定义页面转换。这到底有没有改变,或者这仍然是常态?希望他们在这些线程被请求后添加某种形式的支持 谢谢Xamarin.Forms没有这样的功能,但是有一个解决方法 如果在按下或弹出页面时禁用动画转换,则可以在转换之前/之后执行自定义动画 像这样

我知道以前有人问过这个问题,但大多数都是一年多以前的问题,我想知道这个问题是否仍然存在

Xamarin表单是否仍然不支持自定义导航页面转换

我知道可以在本机应用程序中很好地制作动画,但根据我的研究,Xamarin Forms需要自定义渲染器或包来完成简单的自定义页面转换。这到底有没有改变,或者这仍然是常态?希望他们在这些线程被请求后添加某种形式的支持


谢谢

Xamarin.Forms没有这样的功能,但是有一个解决方法

如果在按下或弹出页面时禁用动画转换,则可以在转换之前/之后执行自定义动画

像这样:

// First animate the opacity of the current page
new Animation(opacity => page.Opacity = opacity / 100, 100, 0)
    .Commit(this, "PageExitAnimation", 1, 350, Easing.CubicInOut, (d, b) =>
    {
         var otherPage = new OtherPage() { Opacity = 0 }; // Create the page with 0 opacity to animate later
         NavigationPage.Navigation.PushAsync(otherPage, false); // Push the new page, as the current page is already with 0 opacity, without animation
         otherPage.FadeTo(1, 350, Easing.CubicInOut); // Animate the fade of the next page
    }
您可以将此概念应用于任何类型的动画,而不是修改不透明度、修改TranslationY、TranslationX等。如果您想要一个复杂的动画,也可以同时修改多个动画,只需花时间学习Xamarin。Forms动画,您就可以了:)


希望有帮助!:D

AFAIK直到最近,xamarin表单才支持这一点。Alexandr Nikulin编写了一个组件,可以实现这一点;我不这么认为。。。但是它非常简单,不只是调用
PushAsync
,而是调用我在答案中编写的代码。您可以将此代码包装在单独的方法中,并调用此方法,而不是
PushAsync
。慢慢来,了解代码的作用,然后适应
PopAsync
方法。这也应该很简单,因为唯一改变的是在调用
PopAsync
之前要改变不透明度(而不是在调用
PushAsync
之后)。但是如果你只为Android和iOS开发,你可以使用一个插件作为注释。希望这有帮助:)