NSAnimationContext does not animate frame size for NSButton
<p>Using <code>NSAnimationContext.runAnimationGroup(_:_:)</code> as demonstrated in the <code>NSAnimationContext</code> documentation to animate both the frame origin <em>and</em> size works as expected for some view types (including <code>NSImageView</code>). However, it does not work as expected for an <code>NSButton</code> unless I add an explicit frame size change <strong>after</strong> the animation</p>

<p><strong>Animating frame size for <code>NSImageView</code></strong></p>

<p>The following works as expected for an NSImageView. It is moved to the origin, and resized to 200x200:</p>

<pre><code>NSAnimationContext.runAnimationGroup({(let context) -&gt; Void in
    context.duration = 2.0
    // Get the animator for an NSImageView
    let a = self.theImage.animator()
    // Move and resize the NSImageView
    a.frame = NSRect(x: 0, y: 0, width: 200, height: 200)
}) {
    print("Animation done")
}
</code></pre>

<p><strong>Animating frame size for <code>NSButton</code></strong></p>

<p>When performing the same with an NSButton, the button will <em>move</em> but <em>not resize</em>:</p>

<pre><code>NSAnimationContext.runAnimationGroup({(let context) -&gt; Void in
    context.duration = 2.0
    // Get the animator for an NSButton
    let a = self.button.animator()
    // Move and resize the NSImageView
    a.frame = NSRect(x: 0, y: 0, width: 200, height: 200)
}) {
    print("Animation done")
}
</code></pre>

<p>However, if I add the following line of code to the end, after all of the animation code, it works as expected!</p>

<pre><code>self.button.frame = NSRect(x: 0, y: 0, width: 200, height: 200)
</code></pre>

<p>The final, working listing for <code>NSButton</code> is:</p>

<pre><code>NSAnimationContext.runAnimationGroup({(let context) -&gt; Void in
    context.duration = 2.0
    // Get the animator for an NSButton
    let a = self.button.animator()
    // Move and resize the NSImageView
    a.frame = NSRect(x: 0, y: 0, width: 200, height: 200)
}) {
    print("Animation done")
}
self.button.frame = NSRect(x: 0, y: 0, width: 200, height: 200)
</code></pre>

<p>I'm not looking a gift horse in the mouth here, but I don't understand why this is required for NSButton, or even what makes it work. Can anyone explain why explicitly setting the frame of the <code>NSButton</code> <em>after</em> the animation code makes the animation work?</p>