窗口淡入淡出

时间:2010-12-28 17:20:55

标签: objective-c cocoa macos window

如何在窗口打开时关闭窗口并在关闭窗口时将窗口淡出?

这应该可以在Objective C中完成。这必须是AppleScript-Objective-C项目的一部分。我正在使用链接到窗口的属性,并在其上执行makeKeyAndOrderFront ...

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:7)

子类(或添加类别)NSWindow并添加:

- (void)fadeInAndMakeKeyAndOrderFront:(BOOL)orderFront {
    [self setAlphaValue:0.0];
    if (orderFront) {
        [self makeKeyAndOrderFront:nil];
    }
    [[self animator] setAlphaValue:1.0];
}

- (void)fadeOutAndOrderOut:(BOOL)orderOut {
    if (orderOut) {
        NSTimeInterval delay = [[NSAnimationContext currentContext] duration] + 0.1;
        [self performSelector:@selector(orderOut:) withObject:nil afterDelay:delay];
    }
    [[self animator] setAlphaValue:0.0];
}

这允许您以编程方式淡入/淡出窗口。

要在按下关闭按钮时让窗口淡出,请将其添加到窗口的委托中:

- (BOOL)windowShouldClose:(id)sender {
    [window fadeOutAndOrderOut:YES];
    return NO;
}

要显示一个淡入调用[window fadeInAndMakeKeyAndOrderFront:YES];的窗口,而不是您要调用的窗口。