2015-11-23 12 views
1

Я создал NSStatusBar NSMenu так:Как динамически размещать NSView по отношению к NSStatusBar?

- (NSMenu *)startUpViewBarMenu { 
    NSMenu *menu = [[NSMenu alloc] init]; 

    NSMenuItem* info = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; 
    //[info setTarget:self]; 
    [info setView:[self startUpView]]; 
    [menu addItem:info]; 

    // Disable auto enable 
    [menu setAutoenablesItems:NO]; 
    [menu setDelegate:(id)self]; 
    return menu; 
} 

Я хотел бы динамически перемещать NSView ([self startUpView]), который указывает, где значок. Подобно тому, как Evernote это сделал. Как вы можете видеть, он имеет центральное значение для значка: enter image description here

Принимая во внимание, что NSX NSStatusBar падает ни влево, ни вправо от значка NSStatusBar.

Так два вопроса:

Как я могу переместить ниспадающее меню NSView?

Я попытался изменить кадр (-100), но это не имеет никакого значения:

NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(-100, 0, 400, 471)]; 

Как я могу динамически двигаться раскрывающийся NSView по отношению к иконе?

ответ

1

Evernote не используйте меню. Кажется, это NSPopover, который запускается при нажатии на ваш статус statusitem.

/* setup your status item */ 

self.statusItem.highlightMode = YES; 
[self.statusItem setAction:@selector(showPopover:)]; 
[self.statusItem setTarget:put correct target here]; 


/* use this code to show popover */ 


-(void)showPopover:(id)sender 
{ 
    NSWindow * aWindow = [sender window]; 
    NSView * aView = [aWindow contentView]; 
    NSPopover * aPopover = [[NSPopover alloc] init]; 
    /* Setup your popover here */ 
    [aPopover showRelativeToRect:aView.bounds ofView:aView preferredEdge:NSMaxYEdge]; 
}