2013-10-07 32 views
1

我想在OS X的狀態欄菜單文本左側添加圖標。我無法在我的代碼中找到示例代碼來執行此操作。現在我正在使用代碼來設置狀態欄的圖像(下圖)和IBActions來調用AppleScript文件。如何在os x狀態欄菜單中添加圖標(從文本左邊)

- (void)awakeFromNib { 

    statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain]; 

    NSBundle *bundle = [NSBundle mainBundle]; 

    statusImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"wifi1" ofType:@"png"]]; 
    statusHighlightImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"wifi2" ofType:@"png"]]; 

    [statusItem setImage:statusImage]; 
    [statusItem setAlternateImage:statusHighlightImage]; 
    [statusItem setMenu:statusMenu]; 
    [statusItem setHighlightMode:YES]; 
} 

- (void)dealloc { 

    [statusImage release]; 
    [statusHighlightImage release]; 
    [super dealloc]; 
} 

- (IBAction)RemoteAppleEvents:(id)sender { 

    NSString* path = [[NSBundle mainBundle] pathForResource:@"AppleEvents" ofType:@"scpt"]; 
    NSURL* url = [NSURL fileURLWithPath:path];NSDictionary* errors = [NSDictionary dictionary]; 
    NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors]; 
    [appleScript executeAndReturnError:nil]; 
    [appleScript release]; 
} 

- (IBAction)InternetSharing:(id)sender { 

    NSString* path = [[NSBundle mainBundle] pathForResource:@"WiFiShare" ofType:@"scpt"]; 
    NSURL* url = [NSURL fileURLWithPath:path];NSDictionary* errors = [NSDictionary dictionary]; 
    NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors]; 
    [appleScript executeAndReturnError:nil]; 
    [appleScript release]; 
} 

- (IBAction)BluetoothSharing:(id)sender { 

    NSString* path = [[NSBundle mainBundle] pathForResource:@"bluetooth" ofType:@"scpt"]; 
    NSURL* url = [NSURL fileURLWithPath:path];NSDictionary* errors = [NSDictionary dictionary]; 
    NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors]; 
    [appleScript executeAndReturnError:nil]; 
    [appleScript release]; 
} 

任何幫助,將不勝感激。感謝名單!

UPDATE *

我的下拉菜單中的IB

My drop down menu in IB

+0

我已經添加了一個代碼示例我的回答 – markhunte

回答

2

更新答案:

要設置圖標在NSMenuitem或NSMenu這樣的:

enter image description here

您只需將圖像添加到您的項目,並在設定菜單圖像「屬性檢查器」

enter image description here

如果您希望通過編程設置圖像:

給每個菜單項的出口,然後用

setImage:

正如你已經做了狀態欄

bar = [NSStatusBar systemStatusBar]; 
statusItem = [bar statusItemWithLength: NSVariableStatusItemLength] ; 

statusImage = [NSImage imageNamed:@"status.icns"]; 




statusHighlightImage = [NSImage imageNamed:@"statusHighLight.icns"]; 

[statusItem setImage:statusImage]; 
[statusItem setAlternateImage:statusHighlightImage]; 

[statusItem setMenu:_statusMenu]; 
[statusItem setHighlightMode:YES]; 

menu1Image = [NSImage imageNamed:@"login.icns"]; 
menu2Image = [NSImage imageNamed:@"persist.icns"]; 
menu3Image = [NSImage imageNamed:@"thumbIcon_.png"]; 

[_MenuItem1 setImage:menu1Image]; 
[_MenuItem2 setImage:menu2Image]; 
[_MenuItem3 setImage:menu3Image]; 

enter image description here

而且我的代碼考慮到ARC

+0

謝謝你的回答! NSView對我來說聽起來太複雜了。我不確定我瞭解我應該如何使用setAttributedTitle在狀態欄菜單中設置圖像。我看到你的例子,但狀態欄中的圖標。我想在菜單窗口中實現圖標,例如os x語言菜單中的標誌。 – Mihalis

+0

對不起,我誤解了。首先它應該是setTitle:不是setAttributedTitle。錯字。我已經做了你以後的事情,但一段時間回來讓我看看我能不能找到它.. – markhunte

+0

好吧,所以你想要的是簡單的。但是我承認,你的例子中沒有任何菜單項。你真的有任何菜單項下降淹沒狀態菜單。你可以用屏幕截圖更新你的問題 – markhunte

相關問題