【发布时间】:2010-12-28 17:20:55
【问题描述】:
如何让窗口在打开时淡入,在关闭时淡出?
这可能应该在 Objective C 中完成。这必须是 AppleScript-Objective-C 项目的一部分。我正在使用链接到窗口的属性,并在其上执行 makeKeyAndOrderFront...
任何帮助将不胜感激!
【问题讨论】:
标签: objective-c cocoa macos window
如何让窗口在打开时淡入,在关闭时淡出?
这可能应该在 Objective C 中完成。这必须是 AppleScript-Objective-C 项目的一部分。我正在使用链接到窗口的属性,并在其上执行 makeKeyAndOrderFront...
任何帮助将不胜感激!
【问题讨论】:
标签: objective-c cocoa macos window
子类(或添加类别)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]; 的窗口,而不是其他方式调用的窗口。
【讨论】: