summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.MacOS
diff options
context:
space:
mode:
authorMarko B. Ludolph <MarkoBL@users.noreply.github.com>2017-10-03 15:46:41 +0200
committerKangho Hur <kangho.hur@samsung.com>2017-10-23 13:33:58 +0900
commit250d04e0bf50705b7fadfd1ff4a703b5607d22b8 (patch)
tree4212d8a715fe2b350539070f77c3e047e748d49f /Xamarin.Forms.Platform.MacOS
parent7accccfc353bda9088d4e9f1be780cc6624d5eca (diff)
downloadxamarin-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.cs33
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()