2012-03-25 10 views
1

私はプログラム的にこのようないくつかのメニュー項目を作成しています:NSMenuItem:切り捨てとsetLineBreakMode

NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:t action:s keyEquivalent:e]; 
    [newItem setTarget:target]; 
    [newItem setEnabled:YES]; 

    [self addItem:newItem]; 

をそして、私はそのように(中央)、その内容を切り詰めたい:

いくつかの本当に長い間、私はsetLineBreakModeメソッドを使用する方法について読んだ

タイトル--->いくつかのレア...タイトル...しかしどうやって?(私は何か間違っていると思います:-S)

答えて

4

可能な解決策は、NSAttributedStringと[NSMenuDelegate confinementRectForMenu:onScreen:screen]を使用することです。

confinementRectForMenuは、私は、私は非常に同じ溶液に出くわした非常に大きなフォント

NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] 
           mutableCopy]; 
[style setLineBreakMode:NSLineBreakByTruncatingMiddle]; 

NSDictionary* paragraphStyle = [[NSDictionary alloc] initWithObjectsAndKeys: 
       style, NSParagraphStyleAttributeName, 
       [NSFont fontWithName:@"Lucida Grande" size:43.0f], 
        NSFontAttributeName, 
       nil]; 
[style release]; 
NSString* title = @"long titlelong titlelong titlelong titlelong titlelong titlelong and another string titlelong titlelong title end"; 
NSAttributedString* str = [[[NSAttributedString alloc] initWithString:title attributes:paragraphStyle] autorelease]; 

NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:title action:@selector(showWhitespaces:) keyEquivalent:@""]; 
[newItem setAttributedTitle:str]; 
[newItem setEnabled:YES]; 
[theMenu addItem:newItem]; 
+0

(でメニュー項目を表示の下にあなたがあなたのデリゲートなしの例を示すことだけ

をしたいの最大幅を設定する必要がありますいつものように:質問を投稿した直後)、メニュー項目の幅を設定する際に問題がありました。それを指摘してくれてありがとう。私はそれを見てみましょう... ;-) –

関連する問題