NSWindow, как ртуть - PullRequest
       6

NSWindow, как ртуть

2 голосов
/ 24 марта 2012

Я создаю приложение, в котором я хочу показать «всплывающее окно» или «уведомление» пользователю, когда он нажимает горячую клавишу.как тот, который появляется, когда вы меняете громкость, или яркость, или как окно ввода приложения Quicksilver.исчезнуть.

И ... проблема в том, что я не знаю, с чего начать.Я пробовал:

NSRect frame = NSMakeRect(0, 0, 600, 65);
_myWindow = [[NSWindow alloc] initWithContentRect:frame
                 styleMask:NSBorderlessWindowMask
                 backing:NSBackingStoreBuffered
                 defer:NO];
[_myWindow setBackgroundColor:[NSColor blueColor]];
[_myWindow center];
[_myWindow makeKeyAndOrderFront:NSApp];

Но, конечно, это не то, что я пытаюсь сделать.

Любая помощь приветствуется; -)

1 Ответ

6 голосов
/ 24 марта 2012

Я считаю, что правильный термин для этого - окно рамки.Quicksilver с открытым исходным кодом (https://github.com/quicksilver/Quicksilver), так что вы можете увидеть, как они это делают, но я сделал нечто похожее с пользовательским подклассом NSWindow:

- (id) initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag
{
    if((self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag])) {
        [self setOpaque:NO];
        [self setIgnoresMouseEvents:YES];
        [self setLevel:NSFloatingWindowLevel];
        [self setBackgroundColor:[NSColor clearColor]];
    }

    return self;
}

и анимацией, управляемойКонтроллер окна:

- (void) windowDidLoad
{
    CAAnimation *animation = [CABasicAnimation animation];
    [animation setDelegate:self];
    [[self window] setAnimations:[NSDictionary dictionaryWithObject:animation forKey:@"alphaValue"]];
}

, чтобы заставить окно исчезать, должен работать код, подобный следующему:

[[self window] setAlphaValue:0.0];
[[[self window] animator] setAlphaValue:1.0];

[[self window] orderFront:self];

Я понимаю, что это не Plug and Play решение, но оно должноНачните.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...