gpt4 book ai didi

objective-c - cocoa :我想知道状态栏图标在屏幕上的位置

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:38 25 4
gpt4 key购买 nike

我想知道状态栏图标在屏幕上的位置

-(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);

最佳答案

您还没有为状态项设置自定义 View ,因此调用 view 将返回 nil。

我猜你想知道位置的原因是当你点击状态项时。

如果您要为您的状态项实现一个操作,它可能看起来像这样:

- (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

例如,您可以使用该信息相对于状态项定位窗口(如 Matt Gemmell 的 MAAttachedWindow)。

关于objective-c - cocoa :我想知道状态栏图标在屏幕上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10201964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com