diff options
author | Marko B. Ludolph <MarkoBL@users.noreply.github.com> | 2017-10-03 15:46:41 +0200 |
---|---|---|
committer | Kangho Hur <kangho.hur@samsung.com> | 2017-10-23 13:33:58 +0900 |
commit | 250d04e0bf50705b7fadfd1ff4a703b5607d22b8 (patch) | |
tree | 4212d8a715fe2b350539070f77c3e047e748d49f /Xamarin.Forms.Platform.MacOS | |
parent | 7accccfc353bda9088d4e9f1be780cc6624d5eca (diff) | |
download | xamarin-forms-250d04e0bf50705b7fadfd1ff4a703b5607d22b8.tar.gz xamarin-forms-250d04e0bf50705b7fadfd1ff4a703b5607d22b8.tar.bz2 xamarin-forms-250d04e0bf50705b7fadfd1ff4a703b5607d22b8.zip |
[MacOS] Navigation Transition Style (#1168)
Diffstat (limited to 'Xamarin.Forms.Platform.MacOS')
-rw-r--r-- | Xamarin.Forms.Platform.MacOS/Renderers/NavigationPageRenderer.cs | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/Xamarin.Forms.Platform.MacOS/Renderers/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.MacOS/Renderers/NavigationPageRenderer.cs index 50957746..595de47d 100644 --- a/Xamarin.Forms.Platform.MacOS/Renderers/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.MacOS/Renderers/NavigationPageRenderer.cs @@ -7,6 +7,7 @@ using AppKit; using CoreAnimation; using Foundation; using Xamarin.Forms.Internals; +using Xamarin.Forms.PlatformConfiguration.macOSSpecific; namespace Xamarin.Forms.Platform.MacOS { @@ -263,6 +264,30 @@ namespace Xamarin.Forms.Platform.MacOS } } + NSViewControllerTransitionOptions ToViewControllerTransitionOptions(NavigationTransitionStyle transitionStyle) + { + switch (transitionStyle) + { + case NavigationTransitionStyle.Crossfade: + return NSViewControllerTransitionOptions.Crossfade; + case NavigationTransitionStyle.SlideBackward: + return NSViewControllerTransitionOptions.SlideBackward; + case NavigationTransitionStyle.SlideDown: + return NSViewControllerTransitionOptions.SlideDown; + case NavigationTransitionStyle.SlideForward: + return NSViewControllerTransitionOptions.SlideForward; + case NavigationTransitionStyle.SlideLeft: + return NSViewControllerTransitionOptions.SlideLeft; + case NavigationTransitionStyle.SlideRight: + return NSViewControllerTransitionOptions.SlideRight; + case NavigationTransitionStyle.SlideUp: + return NSViewControllerTransitionOptions.SlideUp; + + default: + return NSViewControllerTransitionOptions.None; + } + } + async Task<bool> PopPageAsync(Page page, bool animated) { if (page == null) @@ -281,8 +306,10 @@ namespace Xamarin.Forms.Platform.MacOS if (animated) { var previousPageRenderer = Platform.GetRenderer(previousPage); + var transitionStyle = NavigationPage.OnThisPlatform().GetNavigationTransitionPopStyle(); + return await this.HandleAsyncAnimation(target.ViewController, previousPageRenderer.ViewController, - NSViewControllerTransitionOptions.SlideBackward, () => Platform.DisposeRendererAndChildren(target), true); + ToViewControllerTransitionOptions(transitionStyle), () => Platform.DisposeRendererAndChildren(target), true); } RemovePage(page, false); @@ -313,8 +340,10 @@ namespace Xamarin.Forms.Platform.MacOS } var vco = Platform.GetRenderer(oldPage); AddChildViewController(vc.ViewController); + + var transitionStyle = NavigationPage.OnThisPlatform().GetNavigationTransitionPushStyle(); return await this.HandleAsyncAnimation(vco.ViewController, vc.ViewController, - NSViewControllerTransitionOptions.SlideForward, () => page?.SendAppearing(), true); + ToViewControllerTransitionOptions(transitionStyle), () => page?.SendAppearing(), true); } void UpdateBackgroundColor() |