Search code examples
cocoacore-animationnsview

Core Animation - Sheet-like Window Sliding


How difficult would it be to use core animation to make an NSView slide in an out of view like a sheet? Generally speaking, what would be involved in accomplishing this? I've been reading through the CA documentation, but it's been hard for me to pinpoint which parts are relevant to what I want to do since I have no experience with the framework.

Any tips at all would be much appreciated.

Thanks.


Solution

  • Since you're talking of a NSView, you're probably using Cocoa's animation support, not CA directly. In this case, you just need to set the view's frame through the view's animator object:

    [theView setFrame:offscreenFrame];
    [[theView animator] setFrame:finalFrame];
    

    Unfortunately, Cocoa view animation interacts badly with the more advanced features of CA, like setting an easing. You might have more luck using NSViewAnimation instead, which is not Core Animation-backed and allows for a little more flexibility.