private bool ExecuteAnimation(Page page, bool animated, bool isPop)
        {
            var currentPage = page as IAnimationPage;
            var animation   = GetPageAnimation(page, animated);

            _delegate.Animation            = animation;
            _delegate.CurrentPage          = currentPage;
            _delegate.IsPopAnimation       = isPop;
            _delegate.AnimateNavigationBar = (Element as AnimationNavigationPage).AnimateNavigationBar;
            View.BackgroundColor           = page.BackgroundColor.ToUIColor();
            if (animation.Duration > 0)
            {
                if (animation.Type == AnimationType.Flip)
                {
                    AnimationHelper.ExecuteAnimation(currentPage, View, animation, isPop);
                }
                return(animation.Type != AnimationType.Flip);
            }
            return(false);
        }
Пример #2
0
        public override void Animate(IUIViewControllerContextTransitioning context, UIViewController fromController, UIViewController toController, UIView fromView, UIView toView)
        {
            var toViewFrame = new CGRect(toView.Frame.X, toView.Frame.Y, UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height);

            if (toView.Frame.Y == 0 && fromView.Frame.Y != 0 && fromView.Frame.Y <= 64)
            {
                toViewFrame = new CGRect(toView.Frame.X, fromView.Frame.Y, UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height);
            }
            toView.Frame = toViewFrame;
            var offsetY = toView.Frame.Y;

            context.ContainerView.InsertSubview(toView, Reverse ? 0 : 1);
            var startParamsForFromView = Animation.GetStartUIForDisappearingPage(Reverse);
            var startParamsForToView   = Animation.GetStartUIForAppearingPage(Reverse);
            var endParamsForFromView   = Animation.GetEndUIForDisappearingPage(Reverse);
            var endParamsForToView     = Animation.GetEndUIForAppearingPage(Reverse);

            fromView.SetUIParams(startParamsForFromView, Reverse);
            toView.SetUIParams(startParamsForToView, Reverse);
            SetPivotPoint(toView, startParamsForToView.PivotPointLocation, offsetY);
            SetPivotPoint(fromView, endParamsForFromView.PivotPointLocation, offsetY);
            var duration = AnimationHelper.GetDuration(Animation.Duration) / 1000d;

            if (Animation.BounceEffect && !Reverse)
            {
                UIView.AnimateNotify(duration, 0, 0.5f, 0.2f, UIViewAnimationOptions.CurveEaseInOut,
                                     () => OnAnimation(toView, fromView, toViewFrame, endParamsForFromView, endParamsForToView, Reverse),
                                     new UICompletionHandler((finished) => OnAnimationCompled(context, fromView)));
            }
            else
            {
                UIView.Animate(duration, 0, UIViewAnimationOptions.CurveEaseInOut,
                               () => OnAnimation(toView, fromView, toViewFrame, endParamsForFromView, endParamsForToView, Reverse),
                               () => OnAnimationCompled(context, fromView));
            }
        }
Пример #3
0
 public override double TransitionDuration(IUIViewControllerContextTransitioning transitionContext)
 {
     return(AnimationHelper.GetDuration(Animation.Duration) / 1000d);
 }