首先是坏消息:与 UIKit 不同,AppKit 不使用 Core Animation 来呈现其控件。所有的 CALayer 都在 NSView 的特殊层托管实例中居住在他们自己的世界中。因此,除非您的窗口的内容视图是图层托管的,否则您不能在没有相当程度的黑客攻击的情况下将 CAAnimations 应用于整个窗口的内容(可能会将整个内容视图呈现为位图,将其设置为图层的内容,并对其执行转换。我不确定)。
希望您的内容视图是基于核心动画的。如果是这样,您描述的方法应该有效。您还应该能够将图层托管在透明的无边框 NSWindow 中,然后您对内容视图所做的任何转换都会显示其后面的桌面。这是一个应该做你想做的事情的片段(来自 Matt Long):
 - (id) initWithContentRect: (NSRect) contentRect
                 styleMask: (unsigned int) aStyle
                   backing: (NSBackingStoreType) bufferingType
                     defer: (BOOL) flag
{
    if (![super initWithContentRect: contentRect 
                             styleMask: NSBorderlessWindowMask 
                          backing: bufferingType 
                         defer: flag]) return nil;
    [self setBackgroundColor: [NSColor clearColor]];
    [self setOpaque:NO];
    return self;
}