2012-04-18 48 views
3

我想知道屏幕可可:我想知道屏幕上的狀態欄圖標的位置

-(void)awakeFromNib{ 
    statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain]; 
    NSBundle *bundle = [NSBundle mainBundle]; 
    statusImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"r" ofType:@"png"]]; 
    statusHighlightImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"rh" ofType:@"png"]]; 
    [statusItem setImage:statusImage]; 
    [statusItem setAlternateImage:statusHighlightImage]; 
    [statusItem setTitle:@"APP"]; 
    [statusItem setToolTip:@"You do not need this..."]; 
    [statusItem setHighlightMode:YES]; 

    NSRect rect = [[[statusItem view] window ] frame]; 

    NSLog(@"%f",rect.origin.y); 

} 

這樣做的狀態欄圖標的位置,並沒有得到

NSRect rect = [[[statusItem view] window ] frame]; 

NSLog(@"%f",rect.origin.y); 

回答

4

你還沒有爲您的狀態項自定義視圖,因此調用view是否會返回零。

我要猜你想知道位置的原因是,當你點擊的狀態項。

如果你要實現你的狀態項目的動作,它可能是這樣的:

- (IBAction)someAction:(id)sender 
{ 
    NSWindow *window = [[[NSApplication sharedApplication] currentEvent] window]; 
    NSRect rect = [window frame]; 

    NSLog(@"%f",rect.origin.y); 
} 

,然後你將狀態設置項的操作是這樣的:

[statusItem setAction:@selector(someAction:)]; 

和那麼每當你點擊你的狀態項目時,你會在日誌中看到這樣的東西:

2012-04-17 20:40:24.344 test[337:403] 1578.000000 

You co例如,使用該信息來定位與狀態項相關的窗口(如Matt Gemmell的MAAttachedWindow)。

+0

謝謝!它是如此! – 2012-04-18 04:21:06

相關問題