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; } }