狮子复合动画全屏

时间:2011-08-10 06:40:17

标签: cocoa macos animation fullscreen osx-lion

我正在将窗口转换为全屏模式(新的Lion类型的全屏模式)。在进行转换时,我还希望将NSWindow中的一个视图滑动到新位置。

所以,在我的NSWindowDelegate中,我尝试了返回窗口并实现自定义动画:

- (NSArray *)customWindowsToEnterFullScreenForWindow:(NSWindow *)window
{
    return [NSArray arrayWithObject: window];
}


- (void)window:(NSWindow *)_window startCustomAnimationToEnterFullScreenWithDuration:(NSTimeInterval)duration
{
    // book is NSView *ivar
    [[book animator] setFrame: NSMakeRect(/*computed rect*/)];

}

但这完全杀死了进入全屏模式的默认动画,我的窗口突然无法正确绘制。

在使用默认动画时,有没有办法复合这些?我对[view animator]级以外的核心动画很陌生,所以我确定我搞砸了一些非常简单的东西。

1 个答案:

答案 0 :(得分:1)

你必须写这样的东西才能让两个动画同步:

- (void)window:(NSWindow *)_window startCustomAnimationToEnterFullScreenWithDuration:(NSTimeInterval)duration
{
    // book is NSView *ivar
    [[NSAnimationContext currentContext] setDuration:duration];
    [[book animator] setFrame: NSMakeRect(/*computed rect*/)];

}