Пример #1
0
        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);
        }