2011-07-08 71 views
3

我有一个标准NSMenu这样如何动态调整NSMenu的大小以适应其内容?

initial menu

此菜单与此代码创建:

NSMenu *menu = [[NSMenu alloc] init]; 

    NSMenuItem *addMenuItem = [[NSMenuItem alloc] init]; 
    [addMenuItem setTitle:[NSString stringWithFormat:@"Upload"]]; 
    [addMenuItem setHidden:NO]; 
    [addMenuItem setRepresentedObject:contentType]; 
    [addMenuItem setTarget:self]; 
    [addMenuItem setAction:@selector(performSelectedDragOperation:)]; 
    [addMenuItem setTag:operation]; 
    [addMenuItem setEnabled:YES]; 

    [menu addItem:addMenuItem]; 

    NSMenuItem *alterMenuItem = [addMenuItem copy]; 
    [alterMenuItem setTitle:@"Upload in Folder"]; 
    [alterMenuItem setKeyEquivalentModifierMask:NSAlternateKeyMask]; 
    [alterMenuItem setAlternate:YES]; 
    [menu addItem:alterMenuItem]; 
    [alterMenuItem release]; 

    [addMenuItem release]; 

    NSMenuItem *addMenuItem2 = [[NSMenuItem alloc] init]; 
    [addMenuItem2 setTitle:[NSString stringWithFormat:@"EditNewAndUpload"]]; 
    [addMenuItem2 setHidden:NO]; 
    [addMenuItem2 setRepresentedObject:contentType]; 
    [addMenuItem2 setTarget:self]; 
    [addMenuItem2 setAction:@selector(performSelectedDragOperation:)]; 
    [addMenuItem2 setTag:operation]; 
    [addMenuItem2 setEnabled:YES]; 

    [menu addItem:addMenuItem2]; 

    NSMenuItem *alterMenuItem2 = [addMenuItem2 copy]; 
    [alterMenuItem2 setTitle:@"EditNewAndUpload in Folder"]; 
    [alterMenuItem2 setKeyEquivalentModifierMask:NSAlternateKeyMask]; 
    [alterMenuItem2 setAlternate:YES]; 
    [menu addItem:alterMenuItem2]; 
    [alterMenuItem2 release]; 

    [addMenuItem2 release]; 

正如你可以看到有在菜单中的每个选项“重复”项目。当您按下选项(alt)键以显示菜单时,会显示该项目的副本。

的问题是,菜单尺寸的变化,而这是示出了替代的菜单项,因为这个菜单的标题比原稿更大,它永远不会恢复到原来的大小,从而产生这样的:

enter image description here

任何想法,我该如何解决它? 谢谢

回答

2

这是正常的行为,你不应该担心。如果您想要更改,请拨打file a bug

+0

你说得对。我只是在XCode的'产品'菜单中看到相同的行为。谢谢 –

0

你只需要改变NSMenuItem标题

[appmenu itemAtIndex:0]的setTitle:[的NSString stringWithFormat:@ “EditNewAndUpload \ t \ t \ t \ t \ t”]];

相关问题