public void SetFrameSize(CGSize newFrameSize, bool animating) { CGRect newFrame = FrameForNewSizePinnedToTopLeft(newFrameSize); if (animating) { NSAnimation animation = new NSViewAnimation(new [] { NSDictionary.FromObjectsAndKeys( #if MONOMAC new object[] { this, NSValue.FromRectangleF(Frame), NSValue.FromRectangleF(newFrame) }, #else new object[] { this, NSValue.FromCGRect(Frame), NSValue.FromCGRect(newFrame) }, #endif new object[] { NSViewAnimation.TargetKey, NSViewAnimation.StartFrameKey, NSViewAnimation.EndFrameKey } ) }); animation.AnimationBlockingMode = NSAnimationBlockingMode.Nonblocking; animation.Duration = 0.25; animation.StartAnimation(); } else { Superview.SetNeedsDisplayInRect(Frame); Frame = newFrame; NeedsDisplay = true; } }
private CAAnimation frameAnimation(RectangleF aniFrame) { CAKeyFrameAnimation frameAni = new CAKeyFrameAnimation(); frameAni.KeyPath = "frame"; RectangleF start = aniFrame; RectangleF end = aniFrame.Inset(-start.Width * .5f, -start.Height * 0.5f); frameAni.Values = new NSObject[] { NSValue.FromRectangleF(start), NSValue.FromRectangleF(end) }; return(frameAni); }