Подкласс (или добавить категорию) 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];
вместо того, что вы бы назвали иначе.