void FnPerformTableTransition()
        {
            leftmenu.Hidden = !leftmenu.Hidden;
            var transition = new CATransition();

            transition.Duration = 0.25f;
            transition.Type     = CAAnimation.TransitionPush;
            if (leftmenu.Hidden)
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new Foundation.NSString("easeOut"));
                transition.Subtype        = CAAnimation.TransitionFromRight;
            }
            else
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new Foundation.NSString("easeIn"));
                transition.Subtype        = CAAnimation.TransitionFromLeft;
            }
            leftmenu.Layer.AddAnimation(transition, null);
        }
Пример #2
0
            private void SetAni(float from, float to, double duration = 0.3)
            {
                this.Layer.RemoveAnimation("radius");
                using (var ani = CABasicAnimation.FromKeyPath("radius"))
                {
                    ani.Duration = duration;
                    ani.From = NSNumber.FromNFloat(from);
                    ani.To = NSNumber.FromFloat(to);
                    //ani.SetTo(NSNumber.FromFloat(to));
                    ani.AutoReverses = false;
                    ani.RepeatCount = 1;
                    //http://www.jianshu.com/p/02c341c748f9
                    ani.RemovedOnCompletion = false;
                    ani.FillMode = CAFillMode.Backwards;

                    ani.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
                    this.Layer.AddAnimation(ani, "radius");
                }
            }
Пример #3
0
        double showItem(UIImageView img)
        {
            double       Alltime    = 0.0;
            CATransition transition = new CATransition();

            transition.Duration = 0.5f;

            transition.TimingFunction = CAMediaTimingFunction.FromName(
                CAMediaTimingFunction.EaseInEaseOut);
            transition.Type = CATransition.TransitionFade;

            img.Highlighted = false;
            img.Layer.AddAnimation(transition, null);
            img.Highlighted = true;
            img.Alpha       = 1.0f;


            nint        key   = img.Tag;
            List <Pair> items = myDictionary[key];

            if (items.Count > 0)
            {
                float localTime = 0.25f;

                //NSNumber * value2 = [[NSNumber alloc] initWithInt:0 ];
                //NSNumber * value3 = [[NSNumber alloc] initWithFloat:localTime ];

                NSTimer timer = NSTimer.CreateScheduledTimer(localTime, (t) => {
                    showTextItem(t, items, 0);
                });
                //NSTimer timer =  [NSTimer scheduledTimerWithTimeInterval:[value3 floatValue] target:self selector:@selector(showTextItem:) userInfo:[NSDictionary dictionaryWithObjectsAndKeys:items, @"value1", value2, @"value2",  value3, @"value3", nil]  repeats:NO];
                //[_timerTextColecction addObject:timer];
            }

            for (int i = 0; i < items.Count; i++)
            {
                Pair   pair = items[i];
                UIView item = pair.view;

                Alltime = (item.Frame.Size.Width * item.Frame.Size.Width) * TEXT_TIME + 0.70;
            }
            return(Alltime);
        }
        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");
        }
Пример #5
0
        public static void ShakeVertically(this UIView view)
        {
            CAKeyFrameAnimation animation = CAKeyFrameAnimation.FromKeyPath("transform.translation.y");

            animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
            animation.Duration       = 0.5;
            animation.Values         = new NSObject[]
            {
                NSNumber.FromFloat(-12),
                NSNumber.FromFloat(12),
                NSNumber.FromFloat(-8),
                NSNumber.FromFloat(8),
                NSNumber.FromFloat(-4),
                NSNumber.FromFloat(4),
                NSNumber.FromFloat(0)
            };

            view.Layer.AddAnimation(animation, "shake");
        }
        public void EaseOut()
        {
            using (CAMediaTimingFunction mtf1 = new CAMediaTimingFunction(0f, 0f, 0.58f, 1f))
#if !XAMCORE_2_0
                using (CAMediaTimingFunction mtf2 = CAMediaTimingFunction.FromName((string)CAMediaTimingFunction.EaseOut))
#endif
                using (CAMediaTimingFunction mtf3 = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut)) {
#if !XAMCORE_2_0
                    Assert.That(mtf2.GetControlPoint(0), Is.EqualTo(mtf1.GetControlPoint(0)), "0a");
                    Assert.That(mtf2.GetControlPoint(1), Is.EqualTo(mtf1.GetControlPoint(1)), "1a");
                    Assert.That(mtf2.GetControlPoint(2), Is.EqualTo(mtf1.GetControlPoint(2)), "2a");
                    Assert.That(mtf2.GetControlPoint(3), Is.EqualTo(mtf1.GetControlPoint(3)), "3a");
#endif
                    Assert.That(mtf3.GetControlPoint(0), Is.EqualTo(mtf1.GetControlPoint(0)), "0b");
                    Assert.That(mtf3.GetControlPoint(1), Is.EqualTo(mtf1.GetControlPoint(1)), "1b");
                    Assert.That(mtf3.GetControlPoint(2), Is.EqualTo(mtf1.GetControlPoint(2)), "2b");
                    Assert.That(mtf3.GetControlPoint(3), Is.EqualTo(mtf1.GetControlPoint(3)), "3b");
                }
        }
Пример #7
0
        public void CreateBarAnimationForKeyPath(CALayer layer, string key, float toValue)
        {
            var _fromValue = layer.ValueForKeyPath(new NSString(key));
            var _toValue   = new NSNumber(toValue);
            var _key       = new NSString(key);

            var barAnimation = CABasicAnimation.FromKeyPath(key);
            var currentValue = _fromValue;

            if (layer.PresentationLayer != null)
            {
                currentValue = layer.PresentationLayer.ValueForKeyPath(_key);
            }
            barAnimation.From           = currentValue;
            barAnimation.To             = _toValue;
            barAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Default);
            layer.AddAnimation(barAnimation, key);
            layer.SetValueForKeyPath(_toValue, _key);
        }
        private static CAMediaTimingFunction GetDefaultTimingFunction(EasingMode?easingMode = null)
        {
            if (easingMode.HasValue)
            {
                switch (easingMode.Value)
                {
                case EasingMode.EaseIn:
                    return(CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn));

                case EasingMode.EaseOut:
                    return(CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut));

                case EasingMode.EaseInOut:
                    return(CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut));
                }
            }

            return(CAMediaTimingFunction.FromName(CAMediaTimingFunction.Default));
        }
        public static void ShakeVertically(this UIView view, float strength = 12.0f)
        {
            CAKeyFrameAnimation animation = CAKeyFrameAnimation.FromKeyPath("transform.translation.y");

            animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
            animation.Duration       = 0.5;
            animation.Values         = new NSObject[]
            {
                NSNumber.FromFloat(-strength),
                NSNumber.FromFloat(strength),
                NSNumber.FromFloat(-strength * 0.66f),
                NSNumber.FromFloat(strength * 0.66f),
                NSNumber.FromFloat(-strength * 0.33f),
                NSNumber.FromFloat(strength * 0.33f),
                NSNumber.FromFloat(0)
            };

            view.Layer.AddAnimation(animation, "shake");
        }
Пример #10
0
        private CAAnimation CreateStrokeAnimation(string keyPath, double beginTime)
        {
            CABasicAnimation animation = new CABasicAnimation();

            animation.KeyPath        = keyPath;
            animation.BeginTime      = beginTime;
            animation.Duration       = Constants.StrokeAnimationDuration;
            animation.From           = NSObject.FromObject(0);
            animation.To             = NSObject.FromObject(1);
            animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);

            CAAnimationGroup group = new CAAnimationGroup();

            group.Duration    = Constants.TotalStrokeAnimationDuration;
            group.RepeatCount = float.MaxValue;
            group.Animations  = new[] { animation };

            return(group);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            heartsEmitter.Position = new CGPoint(BtnSpreadLove.Frame.X + BtnSpreadLove.Frame.Size.Width / 2.0f,
                                                 BtnSpreadLove.Frame.Y + BtnSpreadLove.Frame.Size.Height / 2.0f);
            heartsEmitter.Size = BtnSpreadLove.Bounds.Size;

            heartsEmitter.Mode       = "kCAEmitterLayerVolume";
            heartsEmitter.Shape      = "kCAEmitterLayerRectangle";
            heartsEmitter.RenderMode = "kCAEmitterLayerAdditive";

            CAEmitterCell heart = new CAEmitterCell();

            heart.Name = "heart";
            heart.EmissionLongitude = (nfloat)Math.PI / 2.0f;
            heart.EmissionRange     = 0.55f * (nfloat)Math.PI;
            heart.BirthRate         = 0.0f;
            heart.LifeTime          = 10.0f;
            heart.Velocity          = -120;
            heart.VelocityRange     = 60;
            heart.AccelerationY     = 20;
            heart.Contents          = UIImage.FromBundle("DazHeart").CGImage;
            heart.Color             = UIColor.FromRGBA(0.5f, 0.0f, 0.5f, 0.5f).CGColor;
            heart.RedRange          = 0.3f;
            heart.BlueRange         = 0.3f;
            heart.AlphaSpeed        = -0.5f / heart.LifeTime;
            heart.Scale             = 0.15f;
            heart.ScaleSpeed        = 0.5f;
            heart.SpinRange         = 2.0f * (nfloat)Math.PI;
            heartsEmitter.Cells     = new CAEmitterCell[] { heart };
            this.View.Layer.AddSublayer(heartsEmitter);

            BtnSpreadLove.TouchUpInside += (sender, e) => {
                var heartsBurst = CABasicAnimation.FromKeyPath("emitterCells.heart.birthRate");
                heartsBurst.From           = NSNumber.FromFloat(10.0f);
                heartsBurst.To             = NSNumber.FromFloat(0.0f);
                heartsBurst.Duration       = 15.0f;
                heartsBurst.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
                heartsEmitter.AddAnimation(heartsBurst, "heartsBurst");
            };
        }
        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);
        }
Пример #13
0
        public void StrokeEndAnimation()
        {
            var endPoint = CABasicAnimation.FromKeyPath("strokeEnd");

            endPoint.From                = NSNumber.FromDouble(0.0);
            endPoint.To                  = NSNumber.FromDouble(1.0);
            endPoint.Duration            = 0.8;
            endPoint.TimingFunction      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
            endPoint.RepeatCount         = 1;
            endPoint.FillMode            = CAFillMode.Forwards;
            endPoint.RemovedOnCompletion = false;
            endPoint.AnimationStopped   += delegate
            {
                if (!Hidden)
                {
                    StrokeStartAnimation();
                }
            };
            AddAnimation(endPoint, endPoint.KeyPath);
        }
Пример #14
0
        public static UIView Pulse(this UIView view, float max)
        {
            var transformAnimation = CAKeyFrameAnimation.GetFromKeyPath("transform");

            transformAnimation.CalculationMode = CAAnimation.AnimationPaced;
            transformAnimation.FillMode        = CAFillMode.Forwards;
            transformAnimation.TimingFunction  = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
            //			pathAnimation.RemovedOnCompletion = false;
            transformAnimation.Duration = .2;

            var transform = CATransform3D.MakeScale(max, max, 1);

            transformAnimation.Values = new [] {
                NSValue.FromCATransform3D(CATransform3D.Identity),
                NSValue.FromCATransform3D(transform),
                NSValue.FromCATransform3D(CATransform3D.Identity),
            };
            view.Layer.AddAnimation(transformAnimation, "pulse");
            return(view);
        }
Пример #15
0
        void PerformTableTransition()
        {
            menuTableView.Hidden = !menuTableView.Hidden;
            //transition effect
            var transition = new CATransition();

            transition.Duration = 0.25f;
            transition.Type     = CAAnimation.TransitionPush;
            if (menuTableView.Hidden)
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new NSString("easeOut"));
                transition.Subtype        = CAAnimation.TransitionFromRight;
            }
            else
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new NSString("easeIn"));
                transition.Subtype        = CAAnimation.TransitionFromLeft;
            }
            menuTableView.Layer.AddAnimation(transition, null);
        }
Пример #16
0
 public void dismissVC(bool animation = true)
 {
     if (!animation)
     {
         CATransition transition = new CATransition();
         transition.Duration       = 0.3;
         transition.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
         transition.Type           = CATransition.TransitionPush;
         transition.Subtype        = CATransition.TransitionFromRight;
         this.View.Window.Layer.AddAnimation(transition, null);
     }
     if (this.NavigationController != null)
     {
         this.NavigationController.PopViewController(animation);
     }
     else
     {
         this.DismissViewController(animation, null);
     }
 }
Пример #17
0
        /** Returns a CABasicAnimation which animates the opacity.
         * @param reverse The direction of the animation. Set to YES if the animation should go from opacity 0 to 1, or NO for the opposite.
         * @return Returns the CABasicAnimation object.
         */

        public CABasicAnimation OpacityAnimationReverse(bool reverse)
        {
            CABasicAnimation animation = CABasicAnimation.FromKeyPath("opacity");

            if (reverse)
            {
                animation.From = new NSNumber(1);
                animation.To   = new NSNumber(0);
            }
            else
            {
                animation.From = new NSNumber(0);
                animation.To   = new NSNumber(1);
            }
            animation.Duration            = AnimationDuration;
            animation.RemovedOnCompletion = false;
            animation.FillMode            = CAFillMode.Forwards;
            animation.TimingFunction      = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            return(animation);
        }
        private CAKeyFrameAnimation PlusKeyFrame(bool closed)
        {
            var paths = closed ? new[] {
                PathPlus(CoreGraphicsExtensions.PI * 0f),
                PathPlus(CoreGraphicsExtensions.PI * 0.125f),
                PathPlus(CoreGraphicsExtensions.PI * 0.25f),
            } : new[] {
                PathPlus(CoreGraphicsExtensions.PI * 0.25f),
                PathPlus(CoreGraphicsExtensions.PI * 0.125f),
                PathPlus(CoreGraphicsExtensions.PI * 0f),
            };
            var anim = CAKeyFrameAnimation.GetFromKeyPath("path");

            anim.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            anim.SetValues(paths.Select(x => x.CGPath).ToArray());
            anim.Duration            = 0.5f;
            anim.RemovedOnCompletion = true;
            anim.FillMode            = CAFillMode.Forwards;
            return(anim);
        }
Пример #19
0
        public void UpdateItemsCount(int count)
        {
            ItemsCount = count;
            var pathAnimation = CAKeyFrameAnimation.GetFromKeyPath("transform");

            pathAnimation.CalculationMode = CAAnimation.AnimationPaced;
            pathAnimation.FillMode        = CAFillMode.Forwards;
            pathAnimation.TimingFunction  = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
//			pathAnimation.RemovedOnCompletion = false;
            pathAnimation.Duration = .2;

            var transform = CATransform3D.MakeScale(2f, 2f, 1);

            pathAnimation.Values = new [] {
                NSValue.FromCATransform3D(CATransform3D.Identity),
                NSValue.FromCATransform3D(transform),
                NSValue.FromCATransform3D(CATransform3D.Identity),
            };
            badge.Layer.AddAnimation(pathAnimation, "pulse");
        }
Пример #20
0
        private void UpdateRecordUI()
        {
            if (DurationLabel != null)
            {
                if (IsRecording)
                {
                    DurationLabel.FadeIn();
                }
                else
                {
                    DurationLabel.FadeOut(0.5);
                }
            }

            if (BGView != null)
            {
                CABasicAnimation borderCol = CABasicAnimation.FromKeyPath("borderColor");
                borderCol.SetFrom((IsRecording) ? UIColor.White.CGColor : UIColor.Red.CGColor);
                borderCol.SetTo((IsRecording) ? UIColor.Red.CGColor : UIColor.White.CGColor);
                borderCol.FillMode       = CAFillMode.Forwards;
                borderCol.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
                borderCol.Duration       = 1;
                BGView.Layer.BorderColor = (IsRecording) ? UIColor.Red.CGColor : UIColor.White.CGColor;

                BGView.Layer.AddAnimation(borderCol, "color");
            }

            if (RecordButton != null)
            {
                RecordButton.FadeOut(0.25, 0, () =>
                {
                    if (RecordButton != null)
                    {
                        string fileName = (IsRecording) ? "ic_stop" : "ic_record";
                        RecordButton.SetImage(UIImage.FromBundle(fileName), UIControlState.Normal);
                        RecordButton.TintColor = (IsRecording) ? UIColor.Black : UIColor.Red;
                        RecordButton.FadeIn(0.25);
                    }
                });
            }
        }
Пример #21
0
        public void CheckIfObjectShouldMoveOntoPlane(ARPlaneAnchor anchor, SCNNode planeAnchorNode)
        {
            foreach (var vo in VirtualObjects)
            {
                // Get the object's position in the plane's coordinate system.
                var objectPos = planeAnchorNode.ConvertPositionToNode(vo.Position, vo.ParentNode);

                if (Math.Abs(objectPos.Y) < float.Epsilon)
                {
                    return;                     // The object is already on the plane - nothing to do here.
                }

                // Add 10% tolerance to the corners of the plane.
                var tolerance = 0.1f;

                var minX = anchor.Center.X - anchor.Extent.X / 2f - anchor.Extent.X * tolerance;
                var maxX = anchor.Center.X + anchor.Extent.X / 2f + anchor.Extent.X * tolerance;
                var minZ = anchor.Center.Z - anchor.Extent.Z / 2f - anchor.Extent.Z * tolerance;
                var maxZ = anchor.Center.Z + anchor.Extent.Z / 2f + anchor.Extent.Z * tolerance;

                if (objectPos.X < minX || objectPos.X > maxX || objectPos.Z < minZ || objectPos.Z > maxZ)
                {
                    return;
                }

                // Drop the object onto the plane if it is near it.
                var verticalAllowance = 0.05f;
                var epsilon           = 0.001;       // Do not bother updating if the difference is less than a mm.
                var distanceToPlane   = Math.Abs(objectPos.Y);
                if (distanceToPlane > epsilon && distanceToPlane < verticalAllowance)
                {
                    Delegate.DidMoveObjectOntoNearbyPlane(this, vo);

                    SCNTransaction.Begin();
                    SCNTransaction.AnimationDuration       = distanceToPlane * 500;               // Move 2mm per second
                    SCNTransaction.AnimationTimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
                    vo.Position = new SCNVector3(vo.Position.X, anchor.Transform.M32, vo.Position.Z);
                    SCNTransaction.Commit();
                }
            }
        }
Пример #22
0
        async public void StartAnimationLoop(AnimationDirection direction, string designType, int minSize, int maxSize, nfloat duration)
        {
            if (!String.IsNullOrEmpty(designType) && designType.Equals(Strings.DesignTypes.design_type_none, StringComparison.InvariantCultureIgnoreCase))
            {
                EndAnimation(AnimationEnding.collapse, 0); return;
            }

            Animating = true;
            Random random = new Random();

            while (Animating)
            {
                nfloat size = random.Next(minSize, maxSize);
                UIView view = new UIView(new CGRect(-size, -size / 2 + random.Next((int)Frame.Size.Height), size, size));

                view.BackgroundColor     = GetColor(random, designType);
                view.Layer.CornerRadius  = view.Frame.Size.Width / 2;
                view.Layer.MasksToBounds = true;

                CABasicAnimation anim = CABasicAnimation.FromKeyPath("position.x");
                if (direction == AnimationDirection.right)
                {
                    anim.From = NSObject.FromObject(Frame.Size.Width + view.Frame.Size.Width);
                    anim.To   = NSObject.FromObject(-Frame.Size.Width);
                }
                else if (direction == AnimationDirection.left)
                {
                    anim.From = NSObject.FromObject(-view.Frame.Size.Width);
                    anim.To   = NSObject.FromObject(Frame.Size.Width + view.Frame.Size.Width);
                }


                anim.Duration       = duration;
                anim.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn);
                view.Layer.AddAnimation(anim, "anim");

                InsertSubview(view, 0);

                await System.Threading.Tasks.Task.Delay(TimeSpan.FromMilliseconds(100));
            }
        }
Пример #23
0
        public void CreateArcAnimationForKey(string key, double fromValue, double toValue, CAAnimationDelegate @delegate)
        {
            var _fromValue = new NSNumber(fromValue);
            var _toValue   = new NSNumber(toValue);
            var _key       = new NSString(key);

            var arcAnimation = CABasicAnimation.FromKeyPath(key);
            var currentAngle = _fromValue;

            if (PresentationLayer != null)
            {
                currentAngle = (NSNumber)PresentationLayer.ValueForKey(_key);
            }
            arcAnimation.Duration       = 1.0f;
            arcAnimation.From           = currentAngle;
            arcAnimation.To             = _toValue;
            arcAnimation.Delegate       = @delegate;
            arcAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Default);
            AddAnimation(arcAnimation, key);
            SetValueForKey(_toValue, _key);
        }
Пример #24
0
        private CAKeyFrameAnimation ScaleAnimation(string keyPath)
        {
            var scaleAnimation = CAKeyFrameAnimation.FromKeyPath(keyPath);

            var easeOut   = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
            var easeInOut = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            var liner     = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);

            var fs              = FocusSquareSize;
            var ts              = FocusSquareSize * ScaleForClosedSquare;
            var values          = new NSNumber[] { fs, fs * 1.15f, fs * 1.15f, ts * 0.97f, ts };
            var keyTimes        = new NSNumber[] { 0.00f, 0.25f, 0.50f, 0.75f, 1.00f };
            var timingFunctions = new CAMediaTimingFunction[] { easeOut, liner, easeOut, easeInOut };

            scaleAnimation.Values          = values;
            scaleAnimation.KeyTimes        = keyTimes;
            scaleAnimation.TimingFunctions = timingFunctions;
            scaleAnimation.Duration        = AnimationDuration;

            return(scaleAnimation);
        }
Пример #25
0
        public void CreateBarAnimationForHeight(CALayer layer, float toValue, CAAnimationDelegate @delegate)
        {
            const string key        = "bounds.size.height";
            var          _fromValue = layer.ValueForKeyPath(new NSString(key));
            var          _toValue   = new NSNumber(toValue);
            var          _key       = new NSString(key);

            var barAnimation = CABasicAnimation.FromKeyPath(key);
            var currentValue = _fromValue;

            if (layer.PresentationLayer != null)
            {
                currentValue = layer.PresentationLayer.ValueForKeyPath(_key);
            }
            barAnimation.From           = currentValue;
            barAnimation.To             = _toValue;
            barAnimation.Delegate       = @delegate;
            barAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Default);
            layer.AddAnimation(barAnimation, key);
            layer.SetValueForKeyPath(_toValue, _key);
        }
Пример #26
0
        private void PerformTableTransition()
        {
            tableViewLeftMenu.Hidden = !tableViewLeftMenu.Hidden;
            var transition = new CATransition
            {
                Duration = 0.25f,
                Type     = CAAnimation.TransitionPush
            };

            if (tableViewLeftMenu.Hidden)
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new Foundation.NSString("easeOut"));
                transition.Subtype        = CAAnimation.TransitionFromRight;
            }
            else
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new Foundation.NSString("easeIn"));
                transition.Subtype        = CAAnimation.TransitionFromLeft;
            }
            tableViewLeftMenu.Layer.AddAnimation(transition, null);
        }
Пример #27
0
        void FnPerformTableTransition()
        {
            Console.WriteLine("N0rf3n - ViewController - FnPerformTableTransition - Begin");
            tableViewMenu.Hidden = !tableViewMenu.Hidden;
            var transition = new CATransition();

            transition.Duration = 0.25f;
            transition.Type     = CAAnimation.TransitionPush;
            if (tableViewMenu.Hidden)
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new Foundation.NSString("easeOut"));
                transition.Subtype        = CAAnimation.TransitionFromRight;
            }
            else
            {
                transition.TimingFunction = CAMediaTimingFunction.FromName(new Foundation.NSString("easeIn"));
                transition.Subtype        = CAAnimation.TransitionFromLeft;
            }
            tableViewMenu.Layer.AddAnimation(transition, null);
            Console.WriteLine("N0rf3n - ViewController - FnPerformTableTransition - End");
        }
        void PerformTransition(object sender, EventArgs e)
        {
            if (transitioning)
            {
                return;
            }

            // First create a CATransition object to describe the transition
            var transition = new CATransition();

            // Animate over 3/4 of a second
            transition.Duration = 0.75;

            // using the ease in/out timing function
            transition.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut.ToString());

            // Now to set the type of transition
            int rnd = random.Next(types.Length);

            transition.Type = types[rnd].ToString();
            if (rnd < 3)             // no fade transition -> randomly choose a subtype
            {
                transition.Subtype = supTypes[random.Next(supTypes.Length)].ToString();
            }

            // Assign a delegate that sets transitioning to false, after the animation stopped.
            this.transitioning  = true;
            transition.Delegate = new AnimationDelegate(this);

            // Now add the animation to the image view layer. This will perform the transiton.
            imageView.Layer.AddAnimation(transition, null);

            // Now hide view 1 & show view 2 that causes Core Animation to animate view1 away and show view2
            view1.Hidden = true;
            view2.Hidden = false;

            // Now cycle through the views
            Swap(ref view1, ref view2);
            Swap(ref view2, ref view3);
        }
        private void PlayExpandAnimation()
        {
            CATransaction.Begin();
            CATransaction.CompletionBlock = () =>
            {
                _coloredCircleLayer.Path = coloredCircleLayerPath().CGPath;
                PlayFocusAnimation();
                ShowLabels();
            };
            var animation = CABasicAnimation.FromKeyPath("path");

            animation.Duration       = 0.8f;
            animation.To             = FromObject(coloredCircleLayerPath().CGPath);
            animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
            // if you remove it the shape will return to the original shape after the animation finished
            animation.FillMode            = CAShapeLayer.FillRuleEvenOdd;
            animation.RemovedOnCompletion = false;


            _coloredCircleLayer.AddAnimation(animation, null);
            CATransaction.Commit();
        }
Пример #30
0
        private void SetupRotationAnimation()
        {
            if (null == _rotationAnimation)
            {
                _rotationAnimation = CABasicAnimation.FromKeyPath("transform.rotation.z");
                _rotationAnimation.AnimationStopped += (x, y) =>
                {
                    // Reinitialize any animation settings.
                    SetupRotationAnimation();

                    if (IsIndeterminate)
                    {
                        // Re-queue the animation to keep the loop going.
                        _arcLayer.AddAnimation(_rotationAnimation, ANIMATION_ROTATION);
                    }
                    else if (null != _arcLayer.AnimationForKey(ANIMATION_ROTATION))
                    {
                        // The rotation animation needs to be stopped, we we'll ease it out...
                        _rotationAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                        // ...then have it removed so it no longer recurs.
                        _rotationAnimation.RemovedOnCompletion = true;
                        // Queue it up for one final rotation...
                        _arcLayer.AddAnimation(_rotationAnimation, ANIMATION_ROTATION);
                    }
                };
            }

            _rotationAnimation.To             = NSNumber.FromFloat((float)Math.PI * 2);
            _rotationAnimation.Duration       = 0.78f;
            _rotationAnimation.Cumulative     = true;
            _rotationAnimation.FillMode       = CAFillMode.Forwards;
            _rotationAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear);
            // We don't want to remove the animation when completed, because that would cause the arc to snap back
            // to its original rotation value.
            _rotationAnimation.RemovedOnCompletion = false;
            // We're not going to automatically repeat, because we want the opportunity to modify the transform
            // on its final spin. Animations cannot be altered once they have been started.
            _rotationAnimation.RepeatCount = 0;
        }