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

2024-01-09

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

-(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将返回零。

我猜测您想知道位置的原因是当您单击状态项时。

如果您要为状态项实施一项操作,它可能如下所示:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocoa:我想知道状态栏图标在屏幕上的位置 的相关文章

  • Cocoa 应用程序未在 High Sierra 上加载视图或运行代码

    我在 Mac AppStore 上有一个应用程序 许多用户最近写信说它无法在 High Sierra 上运行 可能是 10 13 6 很难从中提取具体信息 我设法在朋友的设备上重现了该问题 但是我无法使用该设备通过 Xcode 等进行构建
  • 如何在 UIButton 中创建边框?

    我在名为 addButton 的应用程序中使用自定义按钮 我想用白色边框它 如何在自定义按钮周围获得白色边框 您可以通过访问按钮的图层属性来设置 CALayer 上的边框属性 首先 添加石英 import
  • 获取选定行 NSTableView 的值

    我如何获取 NSTableView 中选定行的值 通过使用selectedRow see here https developer apple com documentation appkit nstableview 1535010 sel
  • 可以对 Xcode 中的 Arm 架构设置进行一些澄清

    据我了解 iPhone 5将采用新的架构 armv7s 我的项目具有有效的架构armv7 并且有Build Active Architecture Only set to true 由于现在商店中的每个应用程序都是为armv6 and or
  • SMCopyAllJobDictionaries 和 SMJobCopyDictionary 已弃用,那么它们的替代品是什么?

    I use SMCopyAllJobDictionaries and SMJobCopyDictionary检查应用程序是否是 Mac 中的登录项 但在 10 10 中 它们已被弃用 那么他们官方推荐的替代品是什么 还没有 引用Servic
  • 在 Safari for Lion (OS X 10.7) 中设置滚动条颜色

    Lion 中的新滚动条似乎会根据 body 元素的背景颜色调整 Safari 中的颜色 有没有办法手动设置滚动条是深色还是浅色 我知道有 webkit CSS 选项来设置滚动条的样式 这实际上早于新的 Lion 滚动条 我使用该方法的唯一问
  • 无法将类型“X”的值转换为预期参数类型“X”

    Xcode 8 和 Swift 3 今天让我非常难过 请看一下并告诉我您是否遇到过类似的问题以及是否可以解决它 我一直在尝试不同的解决方案 其中 Cmd Shift K Cmd Shift Option K 删除派生数据 更改使用的结构 它
  • 在 UIScrollView 中滚动时未调用 TouchBegan 方法

    我注意到 如果我立即将手指放在 UIScrollView 上并滚动 则不会调用 TouchBegan 方法 只有当我在滚动之前将手指放置一段时间后才会调用 TouchBegan 每当 UIScrollView 上有触摸时 不应该总是调用 T
  • GIT 中的 Fastlane 应用程序文件?如何检索当前的 apple_id?

    我为我的 XCode 项目设置了 Fastlane 来实现构建自动化 至少 Fastfile 包含构建选项 应该位于 GIT 中 但我也很高兴 Appfile 团队标识符 也位于 GIT 中 主要问题 Appfile 应该包含我的 appl
  • 在 OSX 上,Java 线程在不关注时会进入睡眠状态

    我正在编写一个程序来监听系统剪贴板的更改 侦听器在单独的线程上运行 并在剪贴板的内容更改时执行某些操作 例如写入文件 我正在使用轮询剪贴板剪贴板所有者界面 http www javapractices com topic TopicActi
  • 如何在全屏视图前面显示 NSPanel?

    我的应用程序以全屏方式运行 我需要类似 iOS 的 UIPopoverController 之类的东西 第一个想法是使用 NSPanel 但我无法让它显示在全屏视图前 我需要一个类似 UIPopoverController 的 Cocoa
  • Objective-C 中可以创建私有财产吗?

    Objective C 中可以创建私有财产吗 我确实知道一种私有财产功能可以通过另一种方式实现 但我对特定问题感兴趣 谢谢 是的 可以 但是代码看起来有点奇怪 如果你打电话它只会给你一些警告 你必须自己检查警告 在您的实现文件 m 中 in
  • 当我的 Mac 进入睡眠状态时,我的应用程序会发生什么情况?

    当 Mac OS X 进入睡眠状态时 由于关闭笔记本电脑或从 Apple 菜单中选择 睡眠 它如何暂停正在执行的进程 我认为非窗口进程只是在任意执行点挂起 对于 Cocoa 应用程序来说也是如此 还是操作系统会等到控制权返回到运行循环调度程
  • 读取 DOMDocument 并使用 CSS 选择器查找元素

    我必须将 Android 应用程序转换为 iOS 该应用程序深入使用了jsoup http jsoup org 图书馆和element select cssQuery http jsoup org apidocs org jsoup nod
  • Objective-C - ARC - NSNumber - 分段错误

    我有一个 Objective C 程序 并且正在使用 ARC 自动引用计数 它在第 23 行抛出分段错误 请参见下面的程序 Question1 为什么会出现分段错误 下面给出的是程序 import
  • 如何强制重装iOS模拟器?

    我想下载模拟器组件 Xcode 6 2 但在下载过程中我的互联网连接丢失了 Xcode 仍然显示我已经安装了 7 1 模拟器 你知道如何强制重装iOS模拟器吗 我已完成以下步骤 从 Library Caches com apple dt X
  • NSExceptionDomains xcode 8 不工作

    我正在使用 UIWebView 来显示电子邮件订阅注册页面 它不是 https 页面 所以我显然需要破例 我不想将其设置为 NSAllowsArbitraryLoads 因为它只是整个应用程序中的一页 应用程序可能会被拒绝 所以我在 inf
  • 捆绑 pathsForResourcesOfType:inDirectory:

    在我的应用程序中 我有很多图片 分为几个类别 以下是项目内和我的硬盘上的应用程序树 ApplicationName Resources Thumbs Images Buttons Default png 在拇指文件夹中 我有很多 png 文
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master
  • MacOSX 下 libpng 的链接器错误

    我正在使用 MacOSX 10 7 2 和 Xcode 4 2 1 我安装了libpng使用端口 我试图在我的应用程序中加载 PNG 图像 但出现链接器错误 Undefined symbols for architecture x86 64

随机推荐