public void animation2(Button button) { var scaleAnimation = CABasicAnimation.FromKeyPath("transform"); scaleAnimation.From = NSValue.FromCATransform3D(CATransform3D.MakeScale(1, 1, 1)); scaleAnimation.To = NSValue.FromCATransform3D(CATransform3D.MakeScale(2, 2, 1)); var opacityAnimation = CABasicAnimation.FromKeyPath("opacity"); opacityAnimation.From = NSNumber.FromFloat(0.25f); opacityAnimation.To = NSNumber.FromFloat(0.0f); var rippleAnimationGroup = new CAAnimationGroup { Duration = 2.0f, TimeOffset = -0.25f, RemovedOnCompletion = true, FillMode = CAFillMode.Both, TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut), Animations = new CAAnimation[] { scaleAnimation, opacityAnimation } }; rippleCircleLayer.AddAnimation(rippleAnimationGroup, "rippleMyAnimations"); }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List <CAAnimation> animations = new List <CAAnimation>(); for (int i = 0; i < (int)state.Points.Count; i++) { string pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i); string keyPath = string.Format("{0}.distanceFromCenter", pointKeyPath); CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i + 1.1); animations.Add(a); keyPath = string.Format("{0}.opacity", pointKeyPath); a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i + 1.1); animations.Add(a); duration = a.Duration; } CAAnimationGroup g = new CAAnimationGroup(); g.Duration = duration; g.Animations = animations.ToArray(); return(g); }
void floatLabelToTop(bool changeColor = true) { CATransaction.Begin(); CATransaction.CompletionBlock = () => { if (changeColor) { this.label.TextColor = this.kDefaultActiveColor; } }; var anim2 = CABasicAnimation.FromKeyPath("transform"); var fromTransform = CATransform3D.MakeScale(1, 1, 1); var toTransform = CATransform3D.MakeScale(0.5f, 0.5f, 1); toTransform = toTransform.Translate(-this.label.Frame.Width / 2, -this.label.Frame.Height, 0); anim2.From = NSValue.FromCATransform3D(fromTransform); anim2.To = NSValue.FromCATransform3D(toTransform); anim2.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); var animGroup = new CAAnimationGroup(); animGroup.Animations = new CAAnimation[] { anim2 }; animGroup.Duration = 0.3; animGroup.FillMode = CAFillMode.Forwards; animGroup.RemovedOnCompletion = false; this.label.Layer.AddAnimation(animGroup, "_floatingLabel"); this.ClipsToBounds = false; CATransaction.Commit(); }
private void Animate() { if (stopAnim) { return; } if (locationAnimations != null) { AnimationImage.Layer.RemoveAnimation("locAnim"); } var locationAnimation = CABasicAnimation.FromKeyPath("opacity"); locationAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); locationAnimation.From = NSNumber.FromFloat(GetAlpha()); locationAnimation.To = NSNumber.FromFloat(0.05f); var scaleAnimation = CABasicAnimation.FromKeyPath("transform.scale"); scaleAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); scaleAnimation.From = NSNumber.FromFloat(1.1f); scaleAnimation.To = NSNumber.FromFloat(1);; locationAnimations = CAAnimationGroup.CreateAnimation(); locationAnimations.Duration = GetAnimationDuration(); locationAnimations.AutoReverses = true; locationAnimations.Animations = new CAAnimation[] { scaleAnimation, locationAnimation }; locationAnimations.AnimationStopped += (sender, e) => { Animate(); }; AnimationImage.Layer.AddAnimation(locationAnimations, "locAnim"); systemSound.PlaySystemSound(); }
private void AnimateBackgroundFadeIn() { var view = _touchView; SetupAnimationLayer(_backgroundLayer, view, 3); _backgroundLayer.RemoveAllAnimations(); // Apparently the UITapGestureRecognizer is disabled after // 1.5 seconds and none of the Touches* events are triggered // for us to fade the backgroundLayer, so we have to chain // animations to ensure that we automatically fade out // the background layer after 1.5 seconds. // var group = new CAAnimationGroup(); group.Duration = 1.7; group.RepeatCount = 1; group.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); group.Animations = new CAAnimation[] { _backgroundFadeInAnimation, _backgroundFadeInHoldAnimation, _backgroundFadeOutAfterHoldAnimation }; _backgroundLayer.AddAnimation(group, "backgroundFadeInAnimation"); }
void CreateAnimationGroup() { PointF fromPt = _sublayer.Position; _sublayer.Position = new PointF(200, 300); CGPath path = new CGPath(); path.AddLines(new PointF[] { fromPt, new PointF(250, 225), new PointF(100, 250), new PointF(200, 300) }); CAKeyFrameAnimation animPosition = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position"); animPosition.Path = path; _sublayer.Transform = CATransform3D.MakeRotation((float)Math.PI, 0, 0, 1); CAKeyFrameAnimation animRotate = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform"); animRotate.Values = new NSObject[] { NSNumber.FromCATransform3D(CATransform3D.MakeRotation(0, 0, 0, 1)), NSNumber.FromCATransform3D(CATransform3D.MakeRotation((float)Math.PI / 2f, 0, 0, 1)), NSNumber.FromCATransform3D(CATransform3D.MakeRotation((float)Math.PI, 0, 0, 1)) }; CAAnimationGroup spinningMonkeyGroup = CAAnimationGroup.CreateAnimation(); spinningMonkeyGroup.Duration = 2; spinningMonkeyGroup.Animations = new CAAnimation[] { animPosition, animRotate }; _sublayer.AddAnimation(spinningMonkeyGroup, null); }
// >> chart-structure-animation-cs public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { var duration = 0.0; var animations = new List <CAAnimation> (); for (int i = 0; i < (int)state.Points.Count; i++) { var pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i); var keyPath = pointKeyPath + ".x"; var point = state.Points.ObjectAtIndex((uint)i) as TKChartVisualPoint; var animation = new CABasicAnimation(); animation.KeyPath = keyPath; animation.Duration = (double)(r.Next(100)) / 100.0; animation.From = new NSNumber(0); animation.To = new NSNumber(point.X); animations.Add(animation); duration = Math.Max(animation.Duration, duration); } var group = new CAAnimationGroup(); group.Duration = duration; group.Animations = animations.ToArray(); return(group); }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0.5; List <CAAnimation> animations = new List <CAAnimation> (); for (int i = 0; i < (int)state.Points.Count; i++) { string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i); TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i); double oldY = rect.Height; double half = oldY + (point.Y - oldY) / 2.0; CAKeyFrameAnimation a = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) }; a.Values = new NSObject[] { new NSNumber(oldY), new NSNumber(half), new NSNumber(point.Y) }; a.Duration = duration; a.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add(a); } CAAnimationGroup group = new CAAnimationGroup(); group.Duration = duration; group.Animations = animations.ToArray(); return(group); }
void UpdateRecordButton(bool isRecording) { //Corner Radius var radiusAnimation = CABasicAnimation.FromKeyPath("cornerRadius"); radiusAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); radiusAnimation.From = NSNumber.FromNFloat(recordButton.Layer.CornerRadius); //Border Thickness var borderAnimation = CABasicAnimation.FromKeyPath("borderWidth"); borderAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); radiusAnimation.From = NSNumber.FromNFloat(recordButton.Layer.BorderWidth); //Animation Group var animationGroup = CAAnimationGroup.CreateAnimation(); animationGroup.Animations = new CAAnimation[] { radiusAnimation, borderAnimation }; animationGroup.Duration = 0.6; animationGroup.FillMode = CAFillMode.Forwards; recordButton.Layer.CornerRadius = isRecording ? 4 : recordButton.Frame.Width / 2; recordButton.Layer.BorderWidth = isRecording ? 2 : 3; recordButton.Layer.AddAnimation(animationGroup, "borderChanges"); }
void HideMenuLayerAnimation(NSString timingFunctionName = null) { CGRect f = _shadowLayer.Frame; var group = new CAAnimationGroup(); var animationOffset = new CABasicAnimation(); animationOffset.KeyPath = new NSString("position"); animationOffset.From = NSValue.FromCGPoint(new CGPoint(f.GetMidX(), f.GetMidY())); animationOffset.To = NSValue.FromCGPoint(new CGPoint(f.GetMidX() - UIScreen.MainScreen.Bounds.Width * _targetViewControllerOffset, f.GetMidY())); var animationScaleX = new CABasicAnimation(); animationScaleX.KeyPath = new NSString("transform.scale.x"); animationScaleX.From = NSValue.FromObject(0.8f); animationScaleX.To = NSValue.FromObject(1.0f); var animationScaleY = new CABasicAnimation(); animationScaleY.KeyPath = new NSString("transform.scale.y"); animationScaleY.From = NSValue.FromObject(0.8f); animationScaleY.To = NSValue.FromObject(1.0f); //during pan gesture animation curve should be linear //In other cases EaseInOut group.TimingFunction = CAMediaTimingFunction.FromName(timingFunctionName ?? CAMediaTimingFunction.EaseInEaseOut); group.Duration = TransitionDurationTime; group.Animations = new[] { animationOffset, animationScaleX, animationScaleY }; _shadowLayer.AddAnimation(group, "HideShadowLayerAnimation"); }
protected void FloatLabelBack() { CATransaction.Begin(); CATransaction.CompletionBlock = () => { Label.TextColor = LabelInactiveTextColor; }; var animation = CABasicAnimation.FromKeyPath("transform"); var fromTransform = CATransform3D.MakeScale(.5f, .5f, 1); var toTransform = CATransform3D.MakeScale(1, 1, 1); fromTransform = fromTransform.Translate(-Label.Frame.Width * 0.5f, -Label.Frame.Height, 0); animation.From = NSValue.FromCATransform3D(fromTransform); animation.To = NSValue.FromCATransform3D(toTransform); animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); var animationGroup = new CAAnimationGroup { Animations = new CAAnimation[] { animation }, Duration = .3f, FillMode = CAFillMode.Forwards, RemovedOnCompletion = false }; Label.Layer.AddAnimation(animationGroup, "_floatLabelBack"); ClipsToBounds = false; CATransaction.Commit(); }
void animateLabelBack() { CATransaction.Begin(); CATransaction.CompletionBlock = () => { this.label.TextColor = this.kDefaultInactiveColor; }; var anim2 = CABasicAnimation.FromKeyPath("transform"); var fromTransform = CATransform3D.MakeScale(0.5f, 0.5f, 1); fromTransform = fromTransform.Translate(-this.label.Frame.Width / 2, -this.label.Frame.Height, 0); var toTransform = CATransform3D.MakeScale(1, 1, 1); anim2.From = NSValue.FromCATransform3D(fromTransform); anim2.To = NSValue.FromCATransform3D(toTransform); anim2.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); var animGroup = new CAAnimationGroup(); animGroup.Animations = new CAAnimation[] { anim2 }; animGroup.Duration = 0.3; animGroup.FillMode = CAFillMode.Forwards; animGroup.RemovedOnCompletion = false; this.label.Layer.AddAnimation(animGroup, "_animateLabelBack"); CATransaction.Commit(); }
public static SkeletonLayerAnimation MakeSlidingAnimation(GradientDirection direction, double duration = 1.5) { return((layer) => { var startValues = direction.StartPoint(); var endValues = direction.EndPoint(); var startPointAnim = CABasicAnimation.FromKeyPath(nameof(CAGradientLayer.StartPoint)); startPointAnim.From = NSValue.FromCGPoint(startValues.from); startPointAnim.To = NSValue.FromCGPoint(startValues.to); var endPointAnim = CABasicAnimation.FromKeyPath(nameof(CAGradientLayer.EndPoint)); endPointAnim.From = NSValue.FromCGPoint(endValues.from); endPointAnim.To = NSValue.FromCGPoint(endValues.to); var animGroup = new CAAnimationGroup { Animations = new[] { startPointAnim, endPointAnim }, Duration = duration, TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn), RepeatCount = float.MaxValue }; return animGroup; }); }
public GradientComponent(RectangleF frame, float animationDuration) : base() { Frame = frame; ColorsList = new List <CGColor[]> (); Animations = new List <CABasicAnimation> (); initializeColorList(); Colors = ColorsList [0]; float stepAnimationDuration = animationDuration / ColorsList.Count; for (int i = 0; i < ColorsList.Count + 1; i++) { createAndAddAnimation(pos: i, duration: stepAnimationDuration, beginTime: i * stepAnimationDuration); } CAAnimationGroup groupAnimation = new CAAnimationGroup(); groupAnimation.FillMode = CAFillMode.Forwards; groupAnimation.RemovedOnCompletion = false; groupAnimation.Animations = Animations.ToArray(); groupAnimation.Duration = animationDuration; groupAnimation.RepeatCount = float.MaxValue; AddAnimation(groupAnimation, "groupAnimation"); }
CAAnimation CreateMoveAndGrowAnimation(CALayer progress, double growToFraction) { CAAnimationGroup grp = CAAnimationGroup.CreateAnimation(); grp.Duration = 0.2; grp.FillMode = CAFillMode.Forwards; grp.RemovedOnCompletion = false; CABasicAnimation move = CABasicAnimation.FromKeyPath("position.x"); double oldOffset = (progress.Frame.Width / 2) * oldFraction; double newOffset = (progress.Frame.Width / 2) * growToFraction; move.From = NSNumber.FromDouble(oldOffset); move.To = NSNumber.FromDouble(newOffset); CABasicAnimation grow = CABasicAnimation.FromKeyPath("bounds"); grow.From = NSValue.FromCGRect(new CGRect(0, 0, progress.Frame.Width * (nfloat)oldFraction, barHeight)); grow.To = NSValue.FromCGRect(new CGRect(0, 0, progress.Frame.Width * (nfloat)growToFraction, barHeight)); grp.Animations = new [] { move, grow, }; return(grp); }
ClockLayer SetupBackgroundLayer() { // Create the color animation var rg = CABasicAnimation.FromKeyPath ("clockColor"); rg.Duration = 3; rg.From = new NSObject (red.Handle); rg.To = new NSObject (green.Handle); var gb = CABasicAnimation.FromKeyPath ("clockColor"); gb.Duration = 3; gb.BeginTime = 3; gb.From = rg.To; gb.To = new NSObject (blue.Handle); var br = CABasicAnimation.FromKeyPath ("clockColor"); br.Duration = 3; br.BeginTime = 6; br.From = gb.To; br.To = rg.From; backgroundAnimation = new CAAnimationGroup (); backgroundAnimation.RepeatCount = 1000; backgroundAnimation.Duration = 9; backgroundAnimation.Animations = new CAAnimation [] { rg, gb, br }; // Create the background layer backgroundLayer = new ClockLayer (); backgroundLayer.ClockColor = new CGColor (0.5f, 1f, 0f, 1.0f); backgroundLayer.AddAnimation (backgroundAnimation, "colorAnimation"); CAConstraintLayoutManager layout = CAConstraintLayoutManager.LayoutManager; backgroundLayer.LayoutManager = layout; return backgroundLayer; }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0.5; List<CAAnimation> animations = new List<CAAnimation> (); for (int i = 0; i<(int)state.Points.Count; i++) { string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i); TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i); double oldY = rect.Height; double half = oldY + (point.Y - oldY)/2.0; CAKeyFrameAnimation a = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.KeyTimes = new NSNumber[] { new NSNumber (0), new NSNumber (0), new NSNumber (1) }; a.Values = new NSObject[] { new NSNumber (oldY), new NSNumber (half), new NSNumber (point.Y) }; a.Duration = duration; a.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut); animations.Add(a); } CAAnimationGroup group = new CAAnimationGroup (); group.Duration = duration; group.Animations = animations.ToArray(); return group; }
public override void ViewWillAppear(bool animated) { base.ViewDidAppear(animated); //Creates basic moving animation var pt = layer.Position; layer.Position = new CGPoint(100, 300); var basicAnimation = CABasicAnimation.FromKeyPath("position"); basicAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); basicAnimation.From = NSValue.FromCGPoint(pt); basicAnimation.To = NSValue.FromCGPoint(new CGPoint(100, 300)); //Creates transformation animation layer.Transform = CATransform3D.MakeRotation((float)Math.PI * 2, 0, 0, 1); var animRotate = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform"); animRotate.Values = new NSObject[] { NSNumber.FromFloat(0f), NSNumber.FromFloat((float)Math.PI / 2f), NSNumber.FromFloat((float)Math.PI), NSNumber.FromFloat((float)Math.PI * 2) }; animRotate.ValueFunction = CAValueFunction.FromName(CAValueFunction.RotateX); //Adds the animations to a group, and adds the group to the layer var animationGroup = CAAnimationGroup.CreateAnimation(); animationGroup.Duration = 2; animationGroup.Animations = new CAAnimation[] { basicAnimation, animRotate }; layer.AddAnimation(animationGroup, null); }
void MoveLogoToTopLeft() { if (Cancelled) { return; } var rotate = CABasicAnimation.FromKeyPath("transform.rotation"); rotate.From = NSObject.FromObject(0); rotate.To = NSObject.FromObject(Math.PI * 2); var liftAndSlide = CABasicAnimation.FromKeyPath("position"); liftAndSlide.From = NSValue.FromCGPoint(SlinkLogoImageView.Layer.Position); liftAndSlide.To = NSValue.FromCGPoint(new CGPoint(40, 75)); var shrink = CABasicAnimation.FromKeyPath("transform.scale"); shrink.To = NSNumber.FromDouble(0.5); var animationGroup = CAAnimationGroup.CreateAnimation(); animationGroup.Animations = new CAAnimation[] { rotate, liftAndSlide, shrink }; animationGroup.Duration = animationDuration / 2; animationGroup.FillMode = CAFillMode.Forwards; animationGroup.RemovedOnCompletion = false; rotate.RepeatCount = 0; SlinkLogoImageView.Layer.AddAnimation(animationGroup, "MoveLogoToTopLeft"); }
public PulseCALayer(float radius, CGPoint position, float animationDuration = 1.5f, float delay = 0.01f, float nextPulseAfter = 0f, float initialPulseScale = 0, float numberOfPulses = float.PositiveInfinity) { ContentsScale = UIScreen.MainScreen.Scale; Opacity = 0; Position = position; Bounds = new CGRect(0, 0, radius * 2, radius * 2); CornerRadius = radius; var animationGroup = new CAAnimationGroup { Duration = animationDuration + nextPulseAfter, BeginTime = delay, RepeatCount = numberOfPulses, TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Default), Animations = new CAAnimation[] { CreateScaleAnimation(animationDuration, initialPulseScale), CreateOpacityAnimation(animationDuration) } }; AddAnimation(animationGroup, "pulse"); }
public override CAAnimation AnimationForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List<CAAnimation> animations = new List<CAAnimation>(); for (int i = 0; i<(int)state.Points.Count; i++) { string pointKeyPath = state.AnimationKeyPathForPointAtIndex ((uint)i); string keyPath = string.Format("{0}.distanceFromCenter", pointKeyPath); CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i+1.1); animations.Add(a); keyPath = string.Format("{0}.opacity", pointKeyPath); a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i+1.1); animations.Add(a); duration = a.Duration; } CAAnimationGroup g = new CAAnimationGroup(); g.Duration = duration; g.Animations = animations.ToArray(); return g; }
public PulseAnimationView() { _animationGroup = CreateAnimation(); Layer.AddAnimation(_animationGroup, "pulse"); NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.WillEnterForegroundNotification, AnimationWillEnterForeground); NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.DidEnterBackgroundNotification, AnimationDidEnterBackground); }
public BaseViewAnimator() { AnimatorAgent = CAAnimationGroup.CreateAnimation(); AnimatorAgent.AnimationStarted += (sender, e) => { }; AnimatorAgent.AnimationStopped += (sender, e) => { tcs?.SetResult(true); }; }
async Task animateView(UIView view) { var size = view.Frame.Size; var grow = new SizeF(size.Width * 1.7f, size.Height * 1.7f); var shrink = new SizeF(size.Width * .4f, size.Height * .4f); TaskCompletionSource <bool> tcs = new TaskCompletionSource <bool> (); //Set the animation path var pathAnimation = CAKeyFrameAnimation.GetFromKeyPath("position"); pathAnimation.CalculationMode = CAAnimation.AnimationPaced; pathAnimation.FillMode = CAFillMode.Forwards; pathAnimation.RemovedOnCompletion = false; pathAnimation.Duration = .5; UIBezierPath path = new UIBezierPath(); path.MoveTo(view.Center); path.AddQuadCurveToPoint(new PointF(290, 34), new PointF(view.Center.X, View.Center.Y)); pathAnimation.Path = path.CGPath; //Set size change var growAnimation = CABasicAnimation.FromKeyPath("bounds.size"); growAnimation.To = NSValue.FromSizeF(grow); growAnimation.FillMode = CAFillMode.Forwards; growAnimation.Duration = .1; growAnimation.RemovedOnCompletion = false; var shrinkAnimation = CABasicAnimation.FromKeyPath("bounds.size"); shrinkAnimation.To = NSValue.FromSizeF(shrink); shrinkAnimation.FillMode = CAFillMode.Forwards; shrinkAnimation.Duration = .4; shrinkAnimation.RemovedOnCompletion = false; shrinkAnimation.BeginTime = .1; CAAnimationGroup animations = new CAAnimationGroup(); animations.FillMode = CAFillMode.Forwards; animations.RemovedOnCompletion = false; animations.Animations = new CAAnimation[] { pathAnimation, growAnimation, shrinkAnimation, }; animations.Duration = .5; animations.AnimationStopped += (sender, e) => { tcs.TrySetResult(true); }; view.Layer.AddAnimation(animations, "movetocart"); NSTimer.CreateScheduledTimer(.5, () => view.RemoveFromSuperview()); await tcs.Task; }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List <CAAnimation> animations = new List <CAAnimation> (); for (int i = 0; i < (int)state.Points.Count; i++) { TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i); if (Grow) { string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.x", series.Index, i); CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.Duration = 0.1 * (i + 0.2); animation.From = new NSNumber(0); animation.To = new NSNumber(point.X); animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add(animation); duration = animation.Duration; } else { string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i); nfloat oldY = rect.Height; if (i > 0) { CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); animation.Duration = 0.1 * (i + 1); animation.Values = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) }; animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) }; animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add(animation); duration = animation.Duration; } else { CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.From = new NSNumber(oldY); animation.To = new NSNumber(point.Y); animation.Duration = 0.1f; animations.Add(animation); } } } CAAnimationGroup group = new CAAnimationGroup(); group.Duration = duration; group.Animations = animations.ToArray(); return(group); }
private CAAnimationGroup GroupAnimation(RectangleF frame) { CAAnimationGroup animationGroup = CAAnimationGroup.CreateAnimation(); animationGroup.Animations = new CAAnimation[] { frameAnimation(frame), rotationAnimation() }; animationGroup.Duration = 1; animationGroup.AutoReverses = true; return(animationGroup); }
private void ExtractAnimation(SCNSceneSource sceneSource) { // In this scene objects are animated separately using long animations // playing 3 successive animations. We will group these long animations // and then split the group in 3 different animation groups. // We could also have used three DAEs (one per animation). var animationIDs = sceneSource.GetIdentifiersOfEntries(new Class("CAAnimation")); var animationCount = animationIDs.Length; var longAnimations = new CAAnimation [animationCount]; var maxDuration = 0.0; for (var index = 0; index < animationCount; index++) { var animation = (CAAnimation)sceneSource.GetEntryWithIdentifier(animationIDs [index].ToString(), new Class("CAAnimation")); if (animation != null) { maxDuration = Math.Max(maxDuration, animation.Duration); longAnimations [index] = animation; } } var longAnimationsGroup = new CAAnimationGroup(); longAnimationsGroup.Animations = longAnimations; longAnimationsGroup.Duration = maxDuration; var idleAnimationGroup = (CAAnimationGroup)longAnimationsGroup.Copy(); idleAnimationGroup.TimeOffset = 6.45833333333333f; IdleAnimationGroup = CAAnimationGroup.CreateAnimation(); IdleAnimationGroup.Animations = new CAAnimation[] { idleAnimationGroup }; IdleAnimationGroup.Duration = 24.71f - 6.45833333333333f; IdleAnimationGroup.RepeatCount = float.MaxValue; IdleAnimationGroup.AutoReverses = true; var animationGroup1 = (CAAnimationGroup)longAnimationsGroup.Copy(); AnimationGroup1 = CAAnimationGroup.CreateAnimation(); AnimationGroup1.Animations = new CAAnimation[] { animationGroup1 }; AnimationGroup1.Duration = 1.4f; AnimationGroup1.FadeInDuration = 0.1f; AnimationGroup1.FadeOutDuration = 0.5f; var animationGroup2 = (CAAnimationGroup)longAnimationsGroup.Copy(); animationGroup2.TimeOffset = 3.666666666666667f; AnimationGroup2 = CAAnimationGroup.CreateAnimation(); AnimationGroup2.Animations = new CAAnimation[] { animationGroup2 }; AnimationGroup2.Duration = 6.416666666666667f - 3.666666666666667f; AnimationGroup2.FadeInDuration = 0.1f; AnimationGroup2.FadeOutDuration = 0.5f; }
/// <summary> /// Shows the complete screen. /// </summary> /// <param name="message">Message to display</param> /// <param name="wasSuccessful">If set to <c>true</c> was process successful.</param> public void ShowCompleteScreen(string message, bool wasSuccessful) { var image = (wasSuccessful) ? UIImage.FromBundle("CallbackSuccess") : UIImage.FromBundle("CallbackWrong"); CallbackIcon.Image = image; CallbackMessage.Text = message; UIView.AnimateNotify(0.3f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackMessage.Alpha = 1.0f; }, (finished) => {}); UIView.AnimateNotify(0.3f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackIcon.Alpha = 1.0f; }, (finished) => {}); var ButtonScaleKeepCABasicAnimation = CABasicAnimation.FromKeyPath(@"transform.scale"); ButtonScaleKeepCABasicAnimation.Duration = 2.0f; ButtonScaleKeepCABasicAnimation.AutoReverses = false; ButtonScaleKeepCABasicAnimation.From = NSNumber.FromNFloat(FullPara); ButtonScaleKeepCABasicAnimation.To = NSNumber.FromNFloat(FullPara); ButtonScaleKeepCABasicAnimation.FillMode = CAFillMode.Forwards; ButtonScaleKeepCABasicAnimation.RemovedOnCompletion = false; ButtonScaleKeepCABasicAnimation.BeginTime = 0.0f; var ButtonScaleSmallCABasicAnimation = CABasicAnimation.FromKeyPath(@"transform.scale"); ButtonScaleSmallCABasicAnimation.Duration = 0.2f; ButtonScaleSmallCABasicAnimation.AutoReverses = false; ButtonScaleSmallCABasicAnimation.From = NSNumber.FromNFloat(FullPara); ButtonScaleSmallCABasicAnimation.To = NSNumber.FromDouble(SmallPara); ButtonScaleSmallCABasicAnimation.FillMode = CAFillMode.Forwards; ButtonScaleSmallCABasicAnimation.RemovedOnCompletion = false; ButtonScaleSmallCABasicAnimation.BeginTime = 2.0f; SmallButton.Layer.AddAnimation(ButtonScaleSmallCABasicAnimation, @"ButtonScaleAnimation"); var animGroup = CAAnimationGroup.CreateAnimation(); animGroup.Animations = new CAAnimation[] { ButtonScaleKeepCABasicAnimation, ButtonScaleSmallCABasicAnimation }; animGroup.Duration = 2.2f; animGroup.RemovedOnCompletion = false; animGroup.AutoReverses = false; animGroup.FillMode = CAFillMode.Forwards; CATransaction.Begin(); CATransaction.CompletionBlock = () => { UIView.AnimateNotify(0.1f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackIcon.Alpha = 0.0f; }, (finished) => {}); UIView.AnimateNotify(0.1f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { CallbackMessage.Alpha = 0.0f; }, (finished) => {}); SmallButton.SetImage(IconImage, UIControlState.Normal); UIView.AnimateNotify(0.1f, 0.0f, UIViewAnimationOptions.BeginFromCurrentState, () => { SmallButton.ImageView.Alpha = 1.0f; }, (finished) => {}); }; SmallButton.Layer.AddAnimation(animGroup, @"ButtonScaleAnimation"); CATransaction.Commit(); }
public static CAAnimationGroup AnimationGroup(CAAnimation[] animations, double?duration = 0.5) { var group = new CAAnimationGroup(); group.FillMode = Convert.MaterialAnimationFillModeToValue(MaterialAnimationFillMode.Forwards); group.RemovedOnCompletion = false; group.Animations = animations; group.Duration = duration.Value; group.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); return(group); }
public void LayersToEdge(AnimationPacket _animatePacket) { CABasicAnimation _aniLayersToEdge; CABasicAnimation _aniLayersToEdgeFade; CAAnimationGroup _animationGroup = new CAAnimationGroup(); AnimateDelegate _myAnimateDelegate = new AnimateDelegate(); var pt = _animatePacket.Layer1.Position; CGPoint x; if (_animatePacket.DirectionY == G__NumberDisplayPositionY.Top) { _animatePacket.Layer1.Position = _animatePacket.ToPosition1; _animatePacket.Layer2.Position = _animatePacket.ToPosition1; x = _animatePacket.ToPosition1; } else { _animatePacket.Layer1.Position = _animatePacket.ToPosition2; _animatePacket.Layer2.Position = _animatePacket.ToPosition2; x = _animatePacket.ToPosition2; } _aniLayersToEdge = CABasicAnimation.FromKeyPath("position"); // ** These two set if the presentation layer will stay set in the final animated position _aniLayersToEdge.RemovedOnCompletion = true; _aniLayersToEdge.FillMode = CAFillMode.Forwards; _aniLayersToEdge.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); _aniLayersToEdge.Delegate = _myAnimateDelegate; _aniLayersToEdge.From = NSValue.FromCGPoint(pt); _aniLayersToEdge.To = NSValue.FromCGPoint(x); //_aniLayersToEdge.Duration = 1.0f; //_aniLayersToEdge.RepeatCount = 1.0f; // ** Fade Animation _aniLayersToEdgeFade = CABasicAnimation.FromKeyPath("opacity"); // ** These two set if the presentation layer will stay set in the final animated position _aniLayersToEdgeFade.RemovedOnCompletion = true; _aniLayersToEdgeFade.FillMode = CAFillMode.Forwards; _aniLayersToEdgeFade.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); _aniLayersToEdgeFade.Delegate = _myAnimateDelegate; _aniLayersToEdgeFade.From = NSNumber.FromFloat(1.0f); _aniLayersToEdgeFade.To = NSNumber.FromFloat(0.0f); //_aniLayersToCenter.Duration = 1.0f; var y = NWAnimations.SpinLogo(); _animationGroup.Duration = 0.5f; _animationGroup.Animations = new CAAnimation[] { _aniLayersToEdgeFade, _aniLayersToEdge, y }; _animatePacket.Layer1.AddAnimation(_animationGroup, null); _animatePacket.Layer2.AddAnimation(_animationGroup, null); }
/// <summary> /// Show blue circle which changing radius from button to View bounds /// </summary> private void ShowConnectedStatusAtimation() { if (__MainViewModel.ConnectionState != ServiceState.Connected) { return; } NSColor startCircleColor = Colors.ConnectiongAnimationCircleColor; NSColor endCircleColor = NSColor.Clear; __animationLayer.FillColor = NSColor.Clear.CGColor; var frame = GuiConnectButtonImage.Frame; var startCircle = CGPath.EllipseFromRect( new CGRect(frame.X + 10, frame.Y + 10, frame.Width - 20, frame.Height - 20) ); nfloat radiusOffset = View.Frame.Height / 2f - frame.Height / 2f; var endCircle = CGPath.EllipseFromRect(new CGRect( frame.X - radiusOffset, frame.Y - radiusOffset, frame.Height + radiusOffset * 2, frame.Width + radiusOffset * 2 )); CABasicAnimation circleRadiusAnimation = CABasicAnimation.FromKeyPath("path"); circleRadiusAnimation.From = FromObject(startCircle); circleRadiusAnimation.To = FromObject(endCircle); CABasicAnimation strokeColorAnimation = CABasicAnimation.FromKeyPath("strokeColor"); strokeColorAnimation.From = FromObject(startCircleColor.CGColor); strokeColorAnimation.To = FromObject(endCircleColor.CGColor); CABasicAnimation lineWidthAnimation = CABasicAnimation.FromKeyPath("lineWidth"); lineWidthAnimation.From = FromObject(7); lineWidthAnimation.To = FromObject(1); CAAnimationGroup animationGroup = new CAAnimationGroup(); animationGroup.Animations = new CAAnimation[] { circleRadiusAnimation, strokeColorAnimation, lineWidthAnimation }; animationGroup.Duration = 2.25f; animationGroup.RepeatCount = float.PositiveInfinity; __animationLayer.AddAnimation(animationGroup, null); }
private void Close() { if (flag == -1) { this.isAnimating = false; this.timer.Invalidate(); this.timer = null; return; } int tag = 1000 + flag; MenuItem item = this.GetByTag(tag); item.Selected -= this.ItemSelected; var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z"); rotateAnimation.Values = new NSNumber[] { 0f, this.CloseRotation, 0f }; rotateAnimation.Duration = 0.5f; rotateAnimation.KeyTimes = new NSNumber[] { 0f, 0.4f, 0.5f }; var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position"); positionAnimation.Duration = 0.5f; var path = new CGPath(); path.MoveToPoint(item.EndPoint.X, item.EndPoint.Y); path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y); path.AddLineToPoint(item.StartPoint.X, item.StartPoint.Y); positionAnimation.Path = path; var alphaAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("opacity"); alphaAnimation.Values = new NSNumber[] { 1f, 1f, 0f }; alphaAnimation.Duration = 0.5f; alphaAnimation.KeyTimes = new NSNumber[] { 0f, 0.8f, 1f }; var animationGroup = new CAAnimationGroup(); animationGroup.Animations = new[] { positionAnimation, rotateAnimation, alphaAnimation }; animationGroup.Duration = 0.5f; animationGroup.FillMode = CAFillMode.Forwards; animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); item.Layer.AddAnimation(animationGroup, "Close"); item.Alpha = 0f; item.Center = item.StartPoint; flag--; }
public CAAnimationGroup Commit() { CAAnimationGroup animationGroup = new CAAnimationGroup(); animationGroup.RemovedOnCompletion = false; animationGroup.FillMode = CAFillMode.Forwards; animationGroup.Duration = TotalDurationSeconds + .1; animationGroup.Animations = this.Animations.ToArray(); TargetItem.AddAnimation(animationGroup, this.AnimationKey); CATransaction.Commit(); return(animationGroup); }
void RebuildLayers() { if (_outerDotLayer != null) { outerDotLayer.RemoveFromSuperLayer(); _outerDotLayer = null; } if (_colorDotLayer != null) { colorDotLayer.RemoveFromSuperLayer(); _colorDotLayer = null; } if (_colorHaloLayer != null) { colorHaloLayer.RemoveFromSuperLayer(); _colorHaloLayer = null; } _pulseAnimationGroup = null; if (this.Image != null) { _imageView.RemoveFromSuperview(); _imageView = null; } if (_headingImageView != null) { _headingImageView.RemoveFromSuperview(); _headingImageView = null; } if (this.HeadingImage != null) this.AddSubview(this.headingImageView); this.Layer.AddSublayer(this.colorHaloLayer); if (this.Image == null) { this.Layer.AddSublayer(this.outerDotLayer); this.Layer.AddSublayer(this.colorDotLayer); } if (this.Image != null) this.AddSubview(this.imageView); if (this.HeadingImage != null) this.AddSubview(this.headingImageView); }
void floatLabelToTop(bool changeColor = true) { CATransaction.Begin (); CATransaction.CompletionBlock = () => { if(changeColor) this.label.TextColor = this.kDefaultActiveColor; }; var anim2 = CABasicAnimation.FromKeyPath ("transform"); var fromTransform = CATransform3D.MakeScale (1, 1, 1); var toTransform = CATransform3D.MakeScale (0.5f, 0.5f, 1); toTransform = toTransform.Translate (-this.label.Frame.Width / 2, -this.label.Frame.Height, 0); anim2.From = NSValue.FromCATransform3D (fromTransform); anim2.To = NSValue.FromCATransform3D (toTransform); anim2.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut); var animGroup = new CAAnimationGroup (); animGroup.Animations = new CAAnimation[]{ anim2 }; animGroup.Duration = 0.3; animGroup.FillMode = CAFillMode.Forwards; animGroup.RemovedOnCompletion = false; this.label.Layer.AddAnimation (animGroup, "_floatingLabel"); this.ClipsToBounds = false; CATransaction.Commit (); }
void animateLabelBack() { CATransaction.Begin (); CATransaction.CompletionBlock = () =>{ this.label.TextColor = this.kDefaultInactiveColor; }; var anim2 = CABasicAnimation.FromKeyPath ("transform"); var fromTransform = CATransform3D.MakeScale (0.5f, 0.5f, 1); fromTransform = fromTransform.Translate (-this.label.Frame.Width / 2, -this.label.Frame.Height, 0); var toTransform = CATransform3D.MakeScale (1, 1, 1); anim2.From = NSValue.FromCATransform3D (fromTransform); anim2.To = NSValue.FromCATransform3D (toTransform); anim2.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut); var animGroup = new CAAnimationGroup (); animGroup.Animations = new CAAnimation[] { anim2 }; animGroup.Duration = 0.3; animGroup.FillMode = CAFillMode.Forwards; animGroup.RemovedOnCompletion = false; this.label.Layer.AddAnimation (animGroup, "_animateLabelBack"); CATransaction.Commit (); }
private void ExtractAnimation (SCNSceneSource sceneSource) { // In this scene objects are animated separately using long animations // playing 3 successive animations. We will group these long animations // and then split the group in 3 different animation groups. // We could also have used three DAEs (one per animation). var animationIDs = sceneSource.GetIdentifiersOfEntries (new Class ("CAAnimation")); var animationCount = animationIDs.Length; var longAnimations = new CAAnimation [animationCount]; var maxDuration = 0.0; for (var index = 0; index < animationCount; index++) { var animation = (CAAnimation)sceneSource.GetEntryWithIdentifier (animationIDs [index].ToString (), new Class ("CAAnimation")); if (animation != null) { maxDuration = Math.Max (maxDuration, animation.Duration); longAnimations [index] = animation; } } var longAnimationsGroup = new CAAnimationGroup (); longAnimationsGroup.Animations = longAnimations; longAnimationsGroup.Duration = maxDuration; var idleAnimationGroup = (CAAnimationGroup)longAnimationsGroup.Copy (); idleAnimationGroup.TimeOffset = 6.45833333333333f; IdleAnimationGroup = CAAnimationGroup.CreateAnimation (); IdleAnimationGroup.Animations = new CAAnimation[] { idleAnimationGroup }; IdleAnimationGroup.Duration = 24.71f - 6.45833333333333f; IdleAnimationGroup.RepeatCount = float.MaxValue; IdleAnimationGroup.AutoReverses = true; var animationGroup1 = (CAAnimationGroup)longAnimationsGroup.Copy (); AnimationGroup1 = CAAnimationGroup.CreateAnimation (); AnimationGroup1.Animations = new CAAnimation[] { animationGroup1 }; AnimationGroup1.Duration = 1.4f; animationGroup1.FadeInDuration = 0.1f; animationGroup1.FadeOutDuration = 0.5f; var animationGroup2 = (CAAnimationGroup)longAnimationsGroup.Copy (); animationGroup2.TimeOffset = 3.666666666666667f; AnimationGroup2 = CAAnimationGroup.CreateAnimation (); AnimationGroup2.Animations = new CAAnimation[] { animationGroup2 }; AnimationGroup2.Duration = 6.416666666666667f - 3.666666666666667f; animationGroup2.FadeInDuration = 0.1f; animationGroup2.FadeOutDuration = 0.5f; }
async Task animateView(UIView view) { var size = view.Frame.Size; var grow = new SizeF((float)size.Width * 1.7f, (float)size.Height * 1.7f); var shrink = new SizeF((float)size.Width * .4f, (float)size.Height * .4f); TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool> (); //Set the animation path var pathAnimation = CAKeyFrameAnimation.GetFromKeyPath("position"); pathAnimation.CalculationMode = CAAnimation.AnimationPaced; pathAnimation.FillMode = CAFillMode.Forwards; pathAnimation.RemovedOnCompletion = false; pathAnimation.Duration = .5; UIBezierPath path = new UIBezierPath (); path.MoveTo (view.Center); path.AddQuadCurveToPoint (new CGPoint (290, 34), new CGPoint(view.Center.X,View.Center.Y)); pathAnimation.Path = path.CGPath; //Set size change var growAnimation = CABasicAnimation.FromKeyPath("bounds.size"); growAnimation.To = NSValue.FromSizeF (grow); growAnimation.FillMode = CAFillMode.Forwards; growAnimation.Duration = .1; growAnimation.RemovedOnCompletion = false; var shrinkAnimation = CABasicAnimation.FromKeyPath("bounds.size"); shrinkAnimation.To = NSValue.FromSizeF (shrink); shrinkAnimation.FillMode = CAFillMode.Forwards; shrinkAnimation.Duration = .4; shrinkAnimation.RemovedOnCompletion = false; shrinkAnimation.BeginTime = .1; CAAnimationGroup animations = new CAAnimationGroup (); animations.FillMode = CAFillMode.Forwards; animations.RemovedOnCompletion = false; animations.Animations = new CAAnimation[] { pathAnimation, growAnimation, shrinkAnimation, }; animations.Duration = .5; animations.AnimationStopped += (sender, e) => { tcs.TrySetResult(true); }; view.Layer.AddAnimation (animations,"movetocart"); NSTimer.CreateScheduledTimer (.5, (timer) => view.RemoveFromSuperview ()); await tcs.Task; }
private void Expand() { if (flag == this.MenuItems.Count) { this.isAnimating = false; this.timer.Invalidate(); this.timer = null; return; } int tag = 1000 + this.flag; MenuItem item = this.GetByTag(tag); item.Selected -= this.ItemSelected; item.Selected += this.ItemSelected; var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z"); rotateAnimation.Values = new NSNumber[] {this.ExpandRotation, 0.0f}; rotateAnimation.Duration = 0.5f; rotateAnimation.KeyTimes = new NSNumber[] {0.3f, 0.4f}; var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position"); positionAnimation.Duration = 0.5f; var path = new CGPath(); path.MoveToPoint(item.StartPoint.X, item.StartPoint.Y); path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y); path.AddLineToPoint(item.NearPoint.X, item.NearPoint.Y); path.AddLineToPoint(item.EndPoint.X, item.EndPoint.Y); positionAnimation.Path = path; var animationGroup = new CAAnimationGroup(); animationGroup.Animations = new[] {positionAnimation, rotateAnimation}; animationGroup.Duration = 0.5f; animationGroup.FillMode = CAFillMode.Forwards; animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); item.Layer.AddAnimation(animationGroup, "Expand"); item.Alpha = 1f; item.Center = item.EndPoint; this.flag++; }
private void Close() { if (flag == -1) { this.isAnimating = false; this.timer.Invalidate(); this.timer = null; return; } int tag = 1000 + flag; MenuItem item = this.GetByTag(tag); item.Selected -= this.ItemSelected; var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z"); rotateAnimation.Values = new NSNumber[] {0f, this.CloseRotation, 0f}; rotateAnimation.Duration = 0.5f; rotateAnimation.KeyTimes = new NSNumber[] {0f, 0.4f, 0.5f}; var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position"); positionAnimation.Duration = 0.5f; var path = new CGPath(); path.MoveToPoint(item.EndPoint.X, item.EndPoint.Y); path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y); path.AddLineToPoint(item.StartPoint.X, item.StartPoint.Y); positionAnimation.Path = path; var alphaAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("opacity"); alphaAnimation.Values = new NSNumber[] {1f, 1f, 0f}; alphaAnimation.Duration = 0.5f; alphaAnimation.KeyTimes = new NSNumber[] {0f, 0.8f, 1f}; var animationGroup = new CAAnimationGroup(); animationGroup.Animations = new[] { positionAnimation, rotateAnimation, alphaAnimation }; animationGroup.Duration = 0.5f; animationGroup.FillMode = CAFillMode.Forwards; animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); item.Layer.AddAnimation(animationGroup, "Close"); item.Alpha = 0f; item.Center = item.StartPoint; flag--; }
private CAAnimationGroup ShrinkAnimationAtPoint(PointF p) { var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position"); positionAnimation.Values = new NSObject[] { NSValue.FromPointF(p)}; positionAnimation.KeyTimes = new NSNumber[] {0.3f}; var scaleAnimation = CABasicAnimation.FromKeyPath("transform"); scaleAnimation.To = NSValue.FromCATransform3D(CATransform3D.MakeScale(0.01f, 0.01f, 1f)); var opacityAnimation = CABasicAnimation.FromKeyPath("opacity"); opacityAnimation.To = NSNumber.FromFloat(0); var animationGroup = new CAAnimationGroup(); animationGroup.Animations = new CAAnimation[] { positionAnimation, scaleAnimation, opacityAnimation }; animationGroup.Duration = 0.3f; animationGroup.FillMode = CAFillMode.Forwards; return animationGroup; }
public override CAAnimation AnimationForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List<CAAnimation> animations = new List<CAAnimation> (); for (int i = 0; i<(int)state.Points.Count; i++) { TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex ((uint)i); if (Grow) { string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.x", series.Index, i); CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.Duration = 0.1 *(i + 0.2); animation.From = new NSNumber(0); animation.To = new NSNumber(point.X); animation.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut); animations.Add(animation); duration = animation.Duration; } else { string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i); nfloat oldY = rect.Height; if (i > 0) { CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); animation.Duration = 0.1* (i + 1); animation.Values = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) }; animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) }; animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add (animation); duration = animation.Duration; } else { CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.From = new NSNumber(oldY); animation.To = new NSNumber(point.Y); animation.Duration = 0.1f; animations.Add(animation); } } } CAAnimationGroup group = new CAAnimationGroup (); group.Duration = duration; group.Animations = animations.ToArray(); return group; }