窗口淡入淡出

Seb*_*hec 0 macos cocoa window objective-c

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

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

任何帮助,将不胜感激!

Reg*_*ent 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];
}
Run Code Online (Sandbox Code Playgroud)

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

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

- (BOOL)windowShouldClose:(id)sender {
    [window fadeOutAndOrderOut:YES];
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

显示一个带淡入调用的窗口,[window fadeInAndMakeKeyAndOrderFront:YES];而不是你打电话给的窗口.