示例#1
0
        private CABasicAnimation InitAnimation()
        {
            var pulseAnimation = CABasicAnimation.FromKeyPath("transform.scale");

            pulseAnimation.Duration     = 1;
            pulseAnimation.RepeatCount  = float.MaxValue;
            pulseAnimation.AutoReverses = true;
            pulseAnimation.From         = NSNumber.FromDouble(0.5);
            pulseAnimation.To           = NSNumber.FromDouble(1);
            return(pulseAnimation);
        }
示例#2
0
        public string Title(int index)
        {
            string result = null;

            if (index < this.Values.Length)
            {
                result = numberFormatter.StringFor(NSNumber.FromDouble(this.Values[index]));
            }

            return(result);
        }
        public void StartAnim()
        {
            CABasicAnimation rotationAnimation = CABasicAnimation.FromKeyPath("transform.rotation");

            rotationAnimation.To          = NSNumber.FromDouble(Math.PI * 2);
            rotationAnimation.RepeatCount = int.MaxValue;
            rotationAnimation.Duration    = Constants.loaderAnimTime;

            LoaderCircle.Hidden = false;
            LoaderCircle.Layer.AddAnimation(rotationAnimation, "rotationAnimation");
        }
示例#4
0
        CAAnimation CreateAutoPulseAnimation()
        {
            CABasicAnimation move = CABasicAnimation.FromKeyPath("position.x");

            move.From                = NSNumber.FromDouble(-frameAutoPulseWidth);
            move.To                  = NSNumber.FromDouble(Frame.Width + frameAutoPulseWidth);
            move.RepeatCount         = float.PositiveInfinity;
            move.RemovedOnCompletion = false;
            move.Duration            = 4;
            return(move);
        }
        void SetupLayers()
        {
            if (view == null || view.Bounds.Size.IsEmpty)
            {
                return;
            }

            RemoveLayers();

            // replicator layer
            replicatorLayer                = new CAReplicatorLayer();
            replicatorLayer.Frame          = view.Bounds;
            replicatorLayer.InstanceCount  = finCount;
            replicatorLayer.PreservesDepth = false;
            replicatorLayer.InstanceColor  = color.CGColor;
            var angle = (nfloat)(Math.PI * 2.0 / (double)finCount);

            replicatorLayer.InstanceTransform = CATransform3D.MakeRotation(angle, 0, 0, 1);

            if (view.Layer == null)
            {
                view.Layer = new CALayer();
            }

            view.Layer.AddSublayer(replicatorLayer);
            view.WantsLayer = true;

            // instance layer
            var layerHeight   = Math.Min(view.Bounds.Width, view.Bounds.Height) * finSizeMultiplier;
            var layerWidth    = layerHeight * finAspectRatio;
            var midX          = view.Bounds.GetMidX() - layerWidth / 2.0;
            var instanceLayer = new CALayer();

            instanceLayer.Frame           = new CGRect(midX, 0, layerWidth, layerHeight);
            instanceLayer.BackgroundColor = color.CGColor;
            instanceLayer.CornerRadius    = (nfloat)(layerWidth / 2.0);
            instanceLayer.Bounds          = new CGRect(CGPoint.Empty, new CGSize(layerWidth, layerHeight));

            replicatorLayer.AddSublayer(instanceLayer);

            // fade animation
            var fadeAnimation = CABasicAnimation.FromKeyPath("opacity");

            fadeAnimation.From        = NSNumber.FromDouble(1.0);
            fadeAnimation.To          = NSNumber.FromDouble(0);
            fadeAnimation.RepeatCount = float.MaxValue;

            //set layer fade animation
            instanceLayer.Opacity  = 0;
            fadeAnimation.Duration = revolutionDuration;
            instanceLayer.AddAnimation(fadeAnimation, "FadeAnimation");

            replicatorLayer.InstanceDelay = revolutionDuration / (double)finCount;
        }
示例#6
0
        private void AddAnimation()
        {
            CABasicAnimation rotationAnimation = CABasicAnimation.FromKeyPath("transform.rotation");

            rotationAnimation.To          = NSNumber.FromDouble(Math.PI * 2); // full rotation (in radians)
            rotationAnimation.RepeatCount = int.MaxValue;                     // repeat forever
            rotationAnimation.Duration    = 0.5;

            // Give the added animation a key for referencing it later (to remove, in this case).
            _imgView.Layer.AddAnimation(rotationAnimation, "rotationAnimation");
        }
        private void UpdateMaskLayout()
        {
            if (_contentLayer == null)
            {
                return;
            }

            nfloat length = 0.0f;

            if (ShimmeringDirection == ShimmeringDirection.Down || ShimmeringDirection == ShimmeringDirection.Up)
            {
                length = _contentLayer.Bounds.Height;
            }
            else
            {
                length = _contentLayer.Bounds.Width;
            }

            if (0 == length)
            {
                return;
            }

            nfloat extraDistance          = length + ShimmeringSpeed * (nfloat)ShimmeringPauseDuration;
            nfloat fullShimmerLength      = length * 3.0f + extraDistance;
            nfloat travelDistance         = length * 2.0f + extraDistance;
            nfloat highlightOutsideLength = (1.0f - ShimmeringHighlightLength) / 2.0f;

            _maskLayer.Locations = new[] {
                NSNumber.FromDouble(highlightOutsideLength),
                0.5,
                1.0 - highlightOutsideLength
            };
            nfloat startPoint = (length + extraDistance) / fullShimmerLength;
            nfloat endPoint   = travelDistance / fullShimmerLength;

            _maskLayer.AnchorPoint = CGPoint.Empty;
            if (ShimmeringDirection == ShimmeringDirection.Down || ShimmeringDirection == ShimmeringDirection.Up)
            {
                _maskLayer.StartPoint = new CGPoint(0.0f, startPoint);
                _maskLayer.EndPoint   = new CGPoint(0.0f, endPoint);
                _maskLayer.Position   = new CGPoint(0.0f, -travelDistance);
                _maskLayer.Bounds     = new CGRect(0.0f, 0.0f, _contentLayer.Bounds.Width, fullShimmerLength);
            }
            else
            {
                _maskLayer.StartPoint = new CGPoint(startPoint, 0.0f);
                _maskLayer.EndPoint   = new CGPoint(endPoint, 0.0f);
                _maskLayer.Position   = new CGPoint(-travelDistance, 0.0f);
                _maskLayer.Bounds     = new CGRect(0.0f, 0.0f, fullShimmerLength, _contentLayer.Bounds.Height);
            }
        }
        private void Shrink()
        {
            var shrinkAnim = CABasicAnimation.FromKeyPath("bounds.size.width");

            shrinkAnim.From                = NSNumber.FromDouble(Frame.Width);
            shrinkAnim.To                  = NSNumber.FromDouble(Frame.Height);
            shrinkAnim.Duration            = shrinkDuration;
            shrinkAnim.TimingFunction      = shrinkCurve;
            shrinkAnim.FillMode            = CAFillMode.Forwards;
            shrinkAnim.RemovedOnCompletion = false;

            Layer.AddAnimation(shrinkAnim, shrinkAnim.KeyPath);
        }
 static NSNumber[] Convert(double [] values)
 {
     if (values == null)
     {
         return(null);
     }
     NSNumber[] array = new NSNumber [values.Length];
     for (int i = 0; i < array.Length; i++)
     {
         array [i] = NSNumber.FromDouble(values [i]);
     }
     return(array);
 }
        private static CABasicAnimation FadeAnimation(CALayer layer, nfloat opacity, double duration)
        {
            CABasicAnimation animation = CABasicAnimation.FromKeyPath("opacity");

            if (layer.PresentationLayer != null)
            {
                animation.From = NSNumber.FromFloat(layer.Opacity);
            }
            animation.To                  = NSNumber.FromDouble(opacity);
            animation.FillMode            = CAFillMode.Both;
            animation.RemovedOnCompletion = false;
            animation.Duration            = duration;
            return(animation);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            var flipView = new JTNumberScrollAnimatedView();

            flipView.TextColor = UIColor.Red;
            flipView.Duration  = 1.0f;
            flipView.MinLength = 4;
            flipView.Font      = UIFont.SystemFontOfSize(20);
            flipView.Value     = NSNumber.FromDouble(259);
            flipView.Frame     = new CGRect(10, 60, this.View.Frame.Width - 20, 100);
            flipView.StartAnimation();
            this.View.AddSubview(flipView);
        }
示例#12
0
        void HandleUpdatedHeading(object sender, CLHeadingUpdatedEventArgs e)
        {
            double oldRad = -_iPhoneLocationManager.Heading.TrueHeading * Math.PI / 180D;
            double newRad = -e.NewHeading.TrueHeading * Math.PI / 180D;

            CABasicAnimation theAnimation;

            theAnimation          = CABasicAnimation.FromKeyPath("transform.rotation");
            theAnimation.From     = NSNumber.FromDouble(oldRad);
            theAnimation.To       = NSNumber.FromDouble(newRad);
            theAnimation.Duration = 0.5;
            compassImage.Layer.AddAnimation(theAnimation, "rotationAnimation");
            compassImage.Transform = CGAffineTransform.MakeRotation((float)newRad);
        }
示例#13
0
 /// <summary>
 /// Tracks revenue with product identifier and optional transaction receipt.
 /// </summary>
 public void LogRevenue(string productIdentifier, int quantity, double price, byte[] receipt = null)
 {
     if (receipt != null)
     {
         _native.LogRevenue(productIdentifier, (nint)quantity,
                            NSNumber.FromDouble(price),
                            NSData.FromArray(receipt));
     }
     else
     {
         _native.LogRevenue(productIdentifier, (nint)quantity,
                            NSNumber.FromDouble(price));
     }
 }
示例#14
0
        public void Basic()
        {
            var a = new CABasicAnimation {
                From           = NSNumber.FromDouble(pieChart.Angle),
                To             = NSNumber.FromDouble(3 * Math.PI / 2),
                KeyPath        = "angle",
                Duration       = 3,
                TimingFunction = CAMediaTimingFunction.FromName(
                    CAMediaTimingFunction.EaseInEaseOut),
            };

            pieChart.AddAnimation(a, "AngleAnimation");
            pieChart.Angle = 3 * Math.PI / 2;
        }
示例#15
0
        private void CreateStateAnimations()
        {
            if (_materialButton.ButtonType == MaterialButtonType.Elevated)
            {
                _shadowOffsetPressed                     = CABasicAnimation.FromKeyPath("shadowOffset");
                _shadowOffsetPressed.Duration            = 0.150;
                _shadowOffsetPressed.FillMode            = CAFillMode.Forwards;
                _shadowOffsetPressed.RemovedOnCompletion = false;
                _shadowOffsetPressed.To                  = FromObject(new CGSize(0, _materialButton.Elevation.PressedElevation));

                _shadowRadiusPressed                     = CABasicAnimation.FromKeyPath("shadowRadius");
                _shadowRadiusPressed.Duration            = 0.150;
                _shadowRadiusPressed.FillMode            = CAFillMode.Forwards;
                _shadowRadiusPressed.RemovedOnCompletion = false;
                _shadowRadiusPressed.To                  = NSNumber.FromDouble(_materialButton.Elevation.PressedElevation);

                _shadowOffsetResting                     = CABasicAnimation.FromKeyPath("shadowOffset");
                _shadowOffsetResting.Duration            = 0.150;
                _shadowOffsetResting.FillMode            = CAFillMode.Forwards;
                _shadowOffsetResting.RemovedOnCompletion = false;
                _shadowOffsetResting.To                  = FromObject(new CGSize(0, _materialButton.Elevation.RestingElevation));

                _shadowRadiusResting                     = CABasicAnimation.FromKeyPath("shadowRadius");
                _shadowRadiusResting.Duration            = 0.150;
                _shadowRadiusResting.FillMode            = CAFillMode.Forwards;
                _shadowRadiusResting.RemovedOnCompletion = false;
                _shadowRadiusResting.To                  = NSNumber.FromDouble(_materialButton.Elevation.RestingElevation);
            }

            _colorPressed                     = CABasicAnimation.FromKeyPath("backgroundColor");
            _colorPressed.Duration            = 0.3;
            _colorPressed.FillMode            = CAFillMode.Forwards;
            _colorPressed.RemovedOnCompletion = false;
            _colorPressed.To                  = FromObject(_pressedBackgroundColor.CGColor);

            _colorResting                     = CABasicAnimation.FromKeyPath("backgroundColor");
            _colorResting.Duration            = 0.3;
            _colorResting.FillMode            = CAFillMode.Forwards;
            _colorResting.RemovedOnCompletion = false;
            _colorResting.To                  = FromObject(_restingBackgroundColor.CGColor);

            if (_rippleGestureRecognizer == null)
            {
                _rippleGestureRecognizer = new UITapGestureRecognizer()
                {
                    Delegate = new MaterialRippleGestureRecognizerDelegate(_rippleColor.CGColor)
                };
                Control.AddGestureRecognizer(_rippleGestureRecognizer);
            }
        }
示例#16
0
        // Shared initialization code
        void Initialize()
        {
            if (beenHere)
            {
                return;
            }

            beenHere = true;

            // Moved from the initWithFrame constructor because it was giving a
            // not initialized correctly message.
            RectangleF aRect;
            ColorRect  firstRect;

            SetBoundsOrigin(new PointF(-108.0f, -108.0f));

            rects        = new List <ColorRect> ();
            selectedItem = null;

            aRect     = new RectangleF(30.0f, 45.0f, 57.0f, 118.0f);
            firstRect = new ColorRect(aRect, NSColor.Blue);
            rects.Add(firstRect);

            //-------------------------------------------------------------------

            NSBundle mainBundle;
            string   path;

            mainBundle = NSBundle.MainBundle;
            path       = mainBundle.PathForResource("EdgeMarkerLeft", "tiff");
            leftImage  = new NSImage(path);

            path       = mainBundle.PathForResource("EdgeMarkerRight", "tiff");
            rightImage = new NSImage(path);

            path     = mainBundle.PathForResource("EdgeMarkerTop", "tiff");
            topImage = new NSImage(path);

            path        = mainBundle.PathForResource("EdgeMarkerBottom", "tiff");
            bottomImage = new NSImage(path);

            upArray   = new NSNumber[] { NSNumber.FromDouble(2.0) };
            downArray = new NSNumber[] { NSNumber.FromDouble(0.5),
                                         NSNumber.FromDouble(0.2) };

            // Setup our custom ruler units
            NSRulerView.RegisterUnit("MyCustomRulerUnits", "mcru", 100.0f, upArray, downArray);
        }
        private void CreateCircleTransformAnimation(CGRect imageFrame)
        {
            _circleTransform.Duration = 0.333;                                          // 0.0333 * 10
            _circleTransform.Values   = new NSObject[8] {
                NSValue.FromCATransform3D(CATransform3D.MakeScale(0.0F, 0.0F, 1.0F)),   //  0/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(0.5F, 0.5F, 1.0F)),   //  1/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(1.0F, 1.0F, 1.0F)),   //  2/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(1.2F, 1.0F, 1.0F)),   //  3/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(1.3F, 1.3F, 1.0F)),   //  4/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(1.37F, 1.37F, 1.0F)), //  5/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(1.4F, 1.4F, 1.0F)),   //  6/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(1.4F, 1.4F, 1.0F))    // 10/10
            };
            _circleTransform.KeyTimes = new NSNumber[8] {
                NSNumber.FromDouble(0.0),        //  0/10
                NSNumber.FromDouble(0.1),        //  1/10
                NSNumber.FromDouble(0.2),        //  2/10
                NSNumber.FromDouble(0.3),        //  3/10
                NSNumber.FromDouble(0.4),        //  4/10
                NSNumber.FromDouble(0.5),        //  5/10
                NSNumber.FromDouble(0.6),        //  6/10
                NSNumber.FromDouble(1.0)         // 10/10
            };

            _circleMaskTransform.Duration = 0.333;                                                                               // 0.0333 * 10
            _circleMaskTransform.Values   = new NSObject[9] {
                NSValue.FromCATransform3D(CATransform3D.Identity),                                                               //  0/10
                NSValue.FromCATransform3D(CATransform3D.Identity),                                                               //  2/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(imageFrame.Width * 1.25F, imageFrame.Height * 1.25F, 1.0F)),   //  3/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(imageFrame.Width * 2.688F, imageFrame.Height * 2.688F, 1.0F)), //  4/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(imageFrame.Width * 3.923F, imageFrame.Height * 3.923F, 1.0F)), //  5/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(imageFrame.Width * 4.375F, imageFrame.Height * 4.375F, 1.0F)), //  6/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(imageFrame.Width * 4.731F, imageFrame.Height * 4.731F, 1.0F)), //  7/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(imageFrame.Width * 5.0F, imageFrame.Height * 5.0F, 1.0F)),     //  9/10
                NSValue.FromCATransform3D(CATransform3D.MakeScale(imageFrame.Width * 5.0F, imageFrame.Height * 5.0F, 1.0F))      // 10/10
            };
            _circleMaskTransform.KeyTimes = new NSNumber[9] {
                NSNumber.FromDouble(0.0),        //  0/10
                NSNumber.FromDouble(0.2),        //  2/10
                NSNumber.FromDouble(0.3),        //  3/10
                NSNumber.FromDouble(0.4),        //  4/10
                NSNumber.FromDouble(0.5),        //  5/10
                NSNumber.FromDouble(0.6),        //  6/10
                NSNumber.FromDouble(0.7),        //  7/10
                NSNumber.FromDouble(0.9),        //  9/10
                NSNumber.FromDouble(1.0)         // 10/10
            };
        }
示例#18
0
        public void Animation()
        {
            Hidden = false;
            var rotate = CABasicAnimation.FromKeyPath("transform.rotation.z");

            rotate.From                = NSNumber.FromDouble(0.0);
            rotate.To                  = NSNumber.FromDouble(Helpers.fPI * 2);
            rotate.Duration            = 1.0;
            rotate.TimingFunction      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
            rotate.RepeatCount         = float.MaxValue;
            rotate.FillMode            = CAFillMode.Forwards;
            rotate.RemovedOnCompletion = false;
            AddAnimation(rotate, rotate.KeyPath);

            StrokeEndAnimation();
        }
示例#19
0
        void SetupLayers()
        {
            if (view == null || view.Bounds.Size.IsEmpty)
            {
                return;
            }

            RemoveLayers();

            var width    = view.Bounds.Width;
            var distance = width / 5.0f / (float)shapeCount;

            // replicator layer
            replicatorLayer                   = new CAReplicatorLayer();
            replicatorLayer.Frame             = new CGRect(0, 0, view.Bounds.Width * 2, view.Bounds.Height);
            replicatorLayer.PreservesDepth    = false;
            replicatorLayer.InstanceCount     = (nint)shapeCount;
            replicatorLayer.InstanceTransform = CATransform3D.MakeTranslation(distance, 0, 0);
            replicatorLayer.InstanceDelay     = -0.06f;
            if (view.Layer == null)
            {
                view.Layer = new CALayer();
            }

            view.Layer.AddSublayer(replicatorLayer);
            view.WantsLayer = true;

            // instance layer
            var dotSize       = view.Bounds.Height;
            var instanceLayer = new CALayer();

            instanceLayer.Frame           = new CGRect(-(shapeCount * distance / 2.0f) - dotSize, 0, dotSize, dotSize);
            instanceLayer.BackgroundColor = shapeColor.CGColor;
            instanceLayer.Bounds          = new CGRect(0, 0, dotSize, dotSize);
            instanceLayer.CornerRadius    = dotSize / 2.0f;
            replicatorLayer.AddSublayer(instanceLayer);

            var runAnimation = CABasicAnimation.FromKeyPath("transform.translation.x");

            runAnimation.From           = NSNumber.FromDouble(-2f * width);
            runAnimation.To             = NSNumber.FromDouble(3f * width);
            runAnimation.Duration       = duration;
            runAnimation.RepeatCount    = float.PositiveInfinity;
            runAnimation.TimingFunction = CAMediaTimingFunction.FromControlPoints(0, 1.0f - easeFactor, 1, easeFactor);

            instanceLayer.AddAnimation(runAnimation, "RunAnimation");
        }
示例#20
0
        partial void repositionImages(NSObject sender)
        {
            foreach (CALayer layer in View.Layer.Sublayers)
            {
                if (layer == textContainer || layer == repositionButton.Layer || layer == durationTextField.Layer)
                {
                    continue;
                }

                CGRect imageBounds = layer.Bounds;

                nfloat X, Y = 0;
                if (windowIsResizing)
                {
                    X = layer.Position.X + ((layer.Position.X - imageBounds.Size.Width / 2) / (lastWindowSize.Width - imageBounds.Size.Width) * (Window.Frame.Width - lastWindowSize.Width));
                    Y = layer.Position.Y + ((layer.Position.Y - imageBounds.Size.Height / 2) / (lastWindowSize.Height - imageBounds.Size.Height) * (Window.Frame.Height - lastWindowSize.Height));
                }
                else
                {
                    X = (nfloat)random.Next((int)Math.Floor(imageBounds.Width / 2), (int)Math.Floor(layer.SuperLayer.Bounds.GetMaxX() - imageBounds.Width / 2));
                    Y = (nfloat)random.Next((int)Math.Floor(imageBounds.Height / 2), (int)Math.Floor(layer.SuperLayer.Bounds.GetMaxY() - imageBounds.Height / 2));
                }
                CGPoint newPoint = new CGPoint(X, Y);

                CAMediaTimingFunction tr      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
                CAMediaTimingFunction tf      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
                CABasicAnimation      posAnim = CABasicAnimation.FromKeyPath("position");
                posAnim.From           = NSValue.FromCGPoint(layer.Position);
                posAnim.Duration       = windowIsResizing ? 0 : durationTextField.FloatValue;
                posAnim.TimingFunction = windowIsResizing ? tr : tf;

                CABasicAnimation zPosAnim = CABasicAnimation.FromKeyPath("zPosition");
                zPosAnim.From           = NSNumber.FromDouble(layer.ZPosition);
                zPosAnim.Duration       = durationTextField.FloatValue;
                zPosAnim.TimingFunction = tf;

                layer.Actions = NSDictionary.FromObjectsAndKeys(new NSObject[] { posAnim, zPosAnim }, new NSObject[] { new NSString("position"), new NSString("zPosition") });

                CATransaction.Begin();
                layer.Position = newPoint;
                if (!windowIsResizing)
                {
                    layer.ZPosition = random.Next(-100, 99);
                }
                CATransaction.Commit();
            }
        }
示例#21
0
        void SetupLayers()
        {
            if (view == null || view.Bounds.Size.IsEmpty)
            {
                return;
            }

            RemoveLayers();

            var shear = new CGAffineTransform(1.0f, 0, shearFactor, 1.0f, 0.0f, 0.0f);

            // replicator layer
            replicatorLayer = new CAReplicatorLayer();
            replicatorLayer.BackgroundColor   = trackColor.CGColor;
            replicatorLayer.Frame             = view.Bounds;
            replicatorLayer.InstanceCount     = (nint)(1 + view.Bounds.Width / hatchSize);
            replicatorLayer.PreservesDepth    = false;
            replicatorLayer.InstanceTransform = CATransform3D.MakeTranslation((nfloat)(hatchSize * 2.0), 0, 0);

            if (view.Layer == null)
            {
                view.Layer = new CALayer();
            }

            view.Layer.AddSublayer(replicatorLayer);
            view.WantsLayer = true;

            // instance layer
            var layerHeight   = view.Bounds.Height;
            var layerWidth    = hatchSize;
            var instanceLayer = new CALayer();

            instanceLayer.Frame           = new CGRect(0, 0, layerWidth, layerHeight);
            instanceLayer.BackgroundColor = hatchColor.CGColor;
            instanceLayer.Bounds          = new CGRect(0, 0, layerWidth, layerHeight);
            instanceLayer.Transform       = CATransform3D.MakeFromAffine(shear);
            replicatorLayer.AddSublayer(instanceLayer);

            var runAnimation = CABasicAnimation.FromKeyPath("transform.translation.x");

            runAnimation.From        = NSNumber.FromDouble(-hatchSize);
            runAnimation.To          = NSNumber.FromDouble(hatchSize);
            runAnimation.Duration    = 0.5;
            runAnimation.RepeatCount = float.PositiveInfinity;
            instanceLayer.AddAnimation(runAnimation, "RunAnimation");
        }
示例#22
0
        void DidTapMyLocation(object sender, EventArgs e)
        {
            var location = mapView.MyLocation;

            if (location == null || !location.Coordinate.IsValid())
            {
                return;
            }

            // Access the GMSMapLayer directly to modify the following properties with a
            // specified timing function and duration.

            var curve = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            CABasicAnimation animation;

            animation                = CABasicAnimation.FromKeyPath(Constants.LayerCameraLatitudeKey);
            animation.Duration       = 2.0;
            animation.TimingFunction = curve;
            animation.To             = NSNumber.FromDouble(location.Coordinate.Latitude);
            mapView.Layer.AddAnimation(animation, Constants.LayerCameraLatitudeKey);

            animation                = CABasicAnimation.FromKeyPath(Constants.LayerCameraLongitudeKey);
            animation.Duration       = 2.0;
            animation.TimingFunction = curve;
            animation.To             = NSNumber.FromDouble(location.Coordinate.Longitude);
            mapView.Layer.AddAnimation(animation, Constants.LayerCameraLongitudeKey);

            animation                = CABasicAnimation.FromKeyPath(Constants.LayerCameraBearingKey);
            animation.Duration       = 2.0;
            animation.TimingFunction = curve;
            animation.To             = NSNumber.FromDouble(0.0);
            mapView.Layer.AddAnimation(animation, Constants.LayerCameraBearingKey);

            // Fly out to the minimum zoom and then zoom back to the current zoom!
            var zoom      = mapView.Camera.Zoom;
            var keyValues = new [] {
                NSNumber.FromFloat(zoom),
                NSNumber.FromFloat(-100),
                NSNumber.FromFloat(zoom)
            };
            var keyFrameAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath(Constants.LayerCameraZoomLevelKey);

            keyFrameAnimation.Duration = 2.0;
            keyFrameAnimation.Values   = keyValues;
            mapView.Layer.AddAnimation(keyFrameAnimation, Constants.LayerCameraZoomLevelKey);
        }
示例#23
0
        /// <summary>
        /// Generates an array of interpolated keyframe values by easing equation. For use with CAKeyframeAnimation
        /// </summary>
        public static NSObject[] CreateKeyValues(float fromValue, float toValue, EasingFormula easingFormula, int steps = 100)
        {
            NSObject[] values  = new NSObject[steps + 1];
            double     value   = 0;
            float      curTime = 0;

            for (int t = 0; t < steps; t++)
            {
                curTime = (float)t / (float)steps;
                var easingFactor = easingFormula(curTime, 0, 1);
                value = (toValue - fromValue) * easingFactor + fromValue;

                values[t] = NSNumber.FromDouble(value);
            }
            values[steps] = NSNumber.FromFloat(toValue);
            return(values);
        }
示例#24
0
        public void StrokeStartAnimation()
        {
            var startPoint = CABasicAnimation.FromKeyPath("strokeStart");

            startPoint.From              = NSNumber.FromDouble(0.0);
            startPoint.To                = NSNumber.FromDouble(1.0);
            startPoint.Duration          = 0.8;
            startPoint.TimingFunction    = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
            startPoint.RepeatCount       = 1;
            startPoint.AnimationStopped += delegate
            {
                if (!Hidden)
                {
                    StrokeEndAnimation();
                }
            };
            AddAnimation(startPoint, startPoint.KeyPath);
        }
示例#25
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            // create a new window instance based on the screen size
            window = new UIWindow(UIScreen.MainScreen.Bounds);

            vc = new UIViewControllerRotation();

            vc.View.BackgroundColor = UIColor.Black;
            testLayer           = new CircleLayer();
            testLayer.Color     = UIColor.Green.CGColor;
            testLayer.Thickness = 19f;
            testLayer.Radius    = 60f;

            testLayer.Frame = vc.View.Layer.Bounds;
            vc.View.Layer.AddSublayer(testLayer);

            testLayer.SetNeedsDisplay();

            radiusAnimation             = CABasicAnimation.FromKeyPath("radius");
            radiusAnimation.Duration    = 3;
            radiusAnimation.To          = NSNumber.FromDouble(120);
            radiusAnimation.RepeatCount = 1000;

            thicknessAnimation             = CABasicAnimation.FromKeyPath("thickness");
            thicknessAnimation.Duration    = 2;
            thicknessAnimation.From        = NSNumber.FromDouble(5);
            thicknessAnimation.To          = NSNumber.FromDouble(38);
            thicknessAnimation.RepeatCount = 1000;

            colorAnimation             = CABasicAnimation.FromKeyPath("circleColor");
            colorAnimation.Duration    = 4;
            colorAnimation.To          = new NSObject(UIColor.Blue.CGColor.Handle);
            colorAnimation.RepeatCount = 1000;

            testLayer.AddAnimation(radiusAnimation, "radiusAnimation");
            testLayer.AddAnimation(thicknessAnimation, "thicknessAnimation");
            testLayer.AddAnimation(colorAnimation, "colorAnimation");

            window.RootViewController = vc;
            // make the window visible
            window.MakeKeyAndVisible();
            return(true);
        }
        public void SpinTimeLabel()
        {
            // Create a basic animation
            CABasicAnimation spin = CABasicAnimation.FromKeyPath("transform.rotation");

            spin.AnimationStopped += AnimationStopped;

            // from value is implied
            spin.To       = NSNumber.FromDouble(Math.PI * 2);
            spin.Duration = 0.6;

            //Set the timing function
            CAMediaTimingFunction tf = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);

            spin.TimingFunction = tf;

            // Kick off the animation by adding it to the layer
            lblTime.Layer.AddAnimation(spin, "spinAnimation");
        }
示例#27
0
        void AttachFadeoutAnimation(CALayer progress, CAAnimation animation, Func <bool> fadeoutVerifier)
        {
            animation.AnimationStopped += (sender, e) => {
                if (!fadeoutVerifier())
                {
                    return;
                }

                if (!e.Finished)
                {
                    return;
                }

                CABasicAnimation fadeout = CABasicAnimation.FromKeyPath("opacity");
                fadeout.From                = NSNumber.FromDouble(1);
                fadeout.To                  = NSNumber.FromDouble(0);
                fadeout.Duration            = 0.5;
                fadeout.FillMode            = CAFillMode.Forwards;
                fadeout.RemovedOnCompletion = false;
                fadeout.AnimationStopped   += (sender2, e2) => {
                    if (!e2.Finished)
                    {
                        return;
                    }

                    // Reset all the properties.
                    inProgress = false;

                    progress.Hidden = true;

                    progress.Opacity = 1;
                    progress.Frame   = new CGRect(0, barY, 0, barHeight);
                    progress.RemoveAllAnimations();
                    SetProgressValue(0.0);

                    progress.Hidden = false;
                };
                progress.Name = ProgressLayerFadingId;
                progress.AddAnimation(fadeout, "opacity");
            };
            progress.AddAnimation(animation, growthAnimationKey);
        }
 private void CreateImageTransformAnimation()
 {
     _imageTransform.Duration = 1.0;                                               //0.0333 * 30
     _imageTransform.Values   = new NSObject[17] {
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.0F, 0.0F, 1.0F)),     //  0/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.0F, 0.0F, 1.0F)),     //  3/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(1.2F, 1.2F, 1.0F)),     //  9/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(1.25F, 1.25F, 1.0F)),   // 10/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(1.2F, 1.2F, 1.0F)),     // 11/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.9F, 0.9F, 1.0F)),     // 14/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.875F, 0.875F, 1.0F)), // 15/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.875F, 0.875F, 1.0F)), // 16/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.9F, 0.9F, 1.0F)),     // 17/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(1.013F, 1.013F, 1.0F)), // 20/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(1.025F, 1.025F, 1.0F)), // 21/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(1.013F, 1.013F, 1.0F)), // 22/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.96F, 0.96F, 1.0F)),   // 25/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.95F, 0.95F, 1.0F)),   // 26/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.96F, 0.96F, 1.0F)),   // 27/30
         NSValue.FromCATransform3D(CATransform3D.MakeScale(0.99F, 0.99F, 1.0F)),   // 29/30
         NSValue.FromCATransform3D(CATransform3D.Identity)                         // 30/30
     };
     _imageTransform.KeyTimes = new NSNumber[17] {
         NSNumber.FromDouble(0.0),        //  0/30
         NSNumber.FromDouble(0.1),        //  3/30
         NSNumber.FromDouble(0.3),        //  9/30
         NSNumber.FromDouble(0.333),      // 10/30
         NSNumber.FromDouble(0.367),      // 11/30
         NSNumber.FromDouble(0.467),      // 14/30
         NSNumber.FromDouble(0.5),        // 15/30
         NSNumber.FromDouble(0.533),      // 16/30
         NSNumber.FromDouble(0.567),      // 17/30
         NSNumber.FromDouble(0.667),      // 20/30
         NSNumber.FromDouble(0.7),        // 21/30
         NSNumber.FromDouble(0.733),      // 22/30
         NSNumber.FromDouble(0.833),      // 25/30
         NSNumber.FromDouble(0.867),      // 26/30
         NSNumber.FromDouble(0.9),        // 27/30
         NSNumber.FromDouble(0.967),      // 29/30
         NSNumber.FromDouble(1.0)         // 30/30
     };
 }
        public ComparisonView(RectangleF frame) : base(frame)
        {
            BackgroundColor = UIColor.White;

            animationImagesImageView = new UIImageView()
            {
                Frame            = new RectangleF(PointF.Empty, new SizeF(40f, 40f)),
                AutoresizingMask = UIViewAutoresizing.FlexibleMargins,
                AnimationImages  = new UIImage[] {
                    UIImage.FromBundle("loading_1"),
                    UIImage.FromBundle("loading_2"),
                    UIImage.FromBundle("loading_3"),
                    UIImage.FromBundle("loading_4"),
                },
            };
            animationImagesImageView.AnimationRepeatCount = 0;
            animationImagesImageView.AnimationDuration    = 0.5;
            animationImagesImageView.StartAnimating();
            Add(animationImagesImageView);

            basicAnimationImageView = new UIImageView(UIImage.FromBundle("loading_1"))
            {
                Frame            = new RectangleF(PointF.Empty, new SizeF(40f, 40f)),
                AutoresizingMask = UIViewAutoresizing.FlexibleMargins,
                Hidden           = true,
            };
            rotationAnimation             = CABasicAnimation.FromKeyPath("transform.rotation");
            rotationAnimation.To          = NSNumber.FromDouble(Math.PI * 2); // full rotation (in radians)
            rotationAnimation.RepeatCount = int.MaxValue;                     // repeat forever
            rotationAnimation.Duration    = 0.5;
            // Give the added animation a key for referencing it later (e.g., to remove it when it is replaced).
            basicAnimationImageView.Layer.AddAnimation(rotationAnimation, "rotationAnimation");
            Add(basicAnimationImageView);

            // Button overlay to switch between the two versions.
            switchButton = new UIButton();
            switchButton.TouchUpInside += (sender, e) => {
                animationImagesImageView.Hidden = !animationImagesImageView.Hidden;
                basicAnimationImageView.Hidden  = !basicAnimationImageView.Hidden;
            };
            Add(switchButton);
        }
        void MoveCardBetweenPhones(UIView card, double duration, CGPoint destination)
        {
            if (Cancelled)
            {
                return;
            }

            var rotate = CABasicAnimation.FromKeyPath("transform.rotation");

            rotate.From = NSObject.FromObject(0);
            rotate.To   = NSObject.FromObject(Math.PI * 2);

            var liftAndSlideRight = CABasicAnimation.FromKeyPath("position");

            liftAndSlideRight.To = NSValue.FromCGPoint(destination);
            liftAndSlideRight.RemovedOnCompletion = false;
            liftAndSlideRight.FillMode            = CAFillMode.Forwards;

            var grow = CABasicAnimation.FromKeyPath("transform.scale");

            grow.To                  = NSNumber.FromDouble(7.5);
            grow.Duration            = animationDuration / 2;
            grow.RemovedOnCompletion = false;
            grow.FillMode            = CAFillMode.Forwards;

            var shrink = CABasicAnimation.FromKeyPath("transform.scale");

            shrink.To                  = NSNumber.FromDouble(3.0);
            shrink.BeginTime           = animationDuration / 2;
            shrink.RemovedOnCompletion = false;
            shrink.FillMode            = CAFillMode.Forwards;

            var animationGroup = CAAnimationGroup.CreateAnimation();

            animationGroup.Animations          = new CAAnimation[] { rotate, liftAndSlideRight, grow, shrink };
            animationGroup.Duration            = duration;
            animationGroup.FillMode            = CAFillMode.Forwards;
            animationGroup.RemovedOnCompletion = false;
            rotate.RepeatCount = 0;

            card.Layer.AddAnimation(animationGroup, "MoveCardBetweenPhones");
        }