2015-11-23 1 views
1

J'ai créé un NSMenu NSStatusBar comme ceci:Comment placer dynamiquement NSView par rapport à 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; 
} 

Je voudrais déplacer dynamiquement la NSView ([self startUpView]) qui pointe à l'endroit où l'icône est. Similaire à la façon dont Evernote l'a fait. Comme vous pouvez le voir il est central à l'icône:

Alors qu'avec mon NSStatusBar le NSView tombe soit à gauche ou à droite de l'icône NSStatusBar.

Alors deux questions:

Comment puis-je déplacer le menu déroulant NSView?

J'ai essayé de changer le cadre (-100), mais il ne fait aucune différence:

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

Comment puis-je dynamiquement déplacer le menu déroulant NSView par rapport à l'icône?

Répondre

1

Evernote fait pas utiliser un menu. Cela semble être un NSPopover qui est déclenché en cliquant sur la vue de votre 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]; 
}