Ejemplo n.º 1
0
        void BurstTapCircle()
        {
            nfloat tapCircleFinalDiameter = CalculateTapCircleFinalDiameter();

            tapCircleFinalDiameter += TapCircleBurstAmount;

            var endingRectSizerView = new UIView(new CGRect(0, 0, tapCircleFinalDiameter, tapCircleFinalDiameter));

            endingRectSizerView.Center = RippleFromTapLocation ? TapPoint : new CGPoint(Bounds.GetMidX(), Bounds.GetMidY());

            UIBezierPath endingCirclePath = UIBezierPath.FromRoundedRect(endingRectSizerView.Frame, tapCircleFinalDiameter / 2f);

            CAShapeLayer tapCircle = (RippleAnimationQueue.Count > 0) ? RippleAnimationQueue.GetItem <CAShapeLayer>(0) : null;

            if (tapCircle != null)
            {
                if (RippleAnimationQueue.Count > 0)
                {
                    RippleAnimationQueue.RemoveObject(0);
                }
                DeathRowForCircleLayers.AddObjects(new NSObject[] { tapCircle });

                CGPath startingPath    = tapCircle.Path;
                nfloat startingOpacity = tapCircle.Opacity;

                if (tapCircle.AnimationKeys != null && tapCircle.AnimationKeys.Length > 0)
                {
                    startingPath = tapCircle.Path;
                    if (tapCircle.PresentationLayer != null)
                    {
                        startingOpacity = tapCircle.PresentationLayer.Opacity;
                    }
                }

                CABasicAnimation tapCircleGrowthAnimation = CABasicAnimation.FromKeyPath("path");
                tapCircleGrowthAnimation.Duration       = TouchUpAnimationDuration;
                tapCircleGrowthAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                tapCircleGrowthAnimation.SetFrom(startingPath);
                tapCircleGrowthAnimation.SetTo(endingCirclePath.CGPath);
                tapCircleGrowthAnimation.FillMode            = CAFillMode.Forwards;
                tapCircleGrowthAnimation.RemovedOnCompletion = false;

                CABasicAnimation fadeOut = CABasicAnimation.FromKeyPath("opacity");
                fadeOut.SetValueForKey(new NSString("fadeCircleOut"), new NSString("id"));
                fadeOut.SetFrom(NSNumber.FromNFloat(startingOpacity));
                fadeOut.SetTo(NSNumber.FromNFloat(0f));
                fadeOut.Duration            = TouchUpAnimationDuration;
                fadeOut.FillMode            = CAFillMode.Forwards;
                fadeOut.RemovedOnCompletion = false;

                tapCircle.AddAnimation(tapCircleGrowthAnimation, "animatePath");
                tapCircle.AddAnimation(fadeOut, "opacityAnimation");
            }
        }
Ejemplo n.º 2
0
 void AnimationDidStop(CAAnimation theAnimation2, bool flag)
 {
     if ((theAnimation2.ValueForKey(new NSString("id")) as NSString).ToString() == "fadeCircleOut")
     {
         DeathRowForCircleLayers.GetItem <UIView>(0).RemoveFromSuperview();
         if (DeathRowForCircleLayers.Count > 0)
         {
             DeathRowForCircleLayers.RemoveObject(0);
         }
     }
 }