internal static void ExecuteAnimation(IAnimationPage page, UIView animatingView, IPageAnimation animation, bool isPop) { if (animation.Type == AnimationType.Flip) { RunUIAnimation(page, animatingView, animation, isPop); } else { RunCAAnimation(animatingView, animation, isPop); } }
private static void RunUIAnimation(IAnimationPage page, UIView view, IPageAnimation animation, bool isPop) { page?.OnAnimationStarted(isPop); var duration = GetDuration(animation.Duration) / 1000d; UIView.BeginAnimations(string.Empty); UIView.SetAnimationDuration(duration); UIView.SetAnimationTransition(GetUITransitionType(animation, isPop), view, true); UIView.CommitAnimations(); Xamarin.Forms.Device.StartTimer(System.TimeSpan.FromSeconds(duration), delegate { page?.OnAnimationFinished(isPop); return(false); }); }