2011-07-08 110 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」]];

相關問題