在运行时更改应用程序图标
Posted
技术标签:
【中文标题】在运行时更改应用程序图标【英文标题】:Change app icon during runtime 【发布时间】:2015-01-15 21:08:18 【问题描述】:在 OSX 10.5+ 中,应用程序图标绘制在小型化窗口上。
Mac Developer Library :: AppKit Framework Reference > NSDockTile > setShowsApplicationBadge:
默认情况下,微型化窗口包含应用程序标记,以将相关的应用程序传达给用户。在 OS X v10.5 及更高版本中,应用程序磁贴不支持应用程序徽章。具有自定义视图的小型化窗口不会绘制应用程序徽章。应用程序图标由
NSDockTile
对象自动定位在磁贴中。
注意“应用程序图标自动定位在磁贴中”。
如何使用 Objective-c 更改应用程序图标?还是其他方法?
【问题讨论】:
【参考方案1】:您可以使用-[NSApplication setApplicationIconImage:]
或向-[NSDockTile setContentView:]
提供视图(如NSImageView
)。
【讨论】:
感谢 DarkDust,如果我设置应用程序图标图像,它会更改停靠图标,但不会更改小型化窗口上的图标。这是预期的吗?你有火狐吗?如果你是你,你可以安装插件DevPrefs,用 Shift + F4 打开 scrtachpad,转到顶部的菜单栏并将“环境”设置为“浏览器”。然后复制此要点HERE 并将IMAGE_PATH
设置为桌面上的图像并运行脚本。它确实setApplicationIconImage
,但它不会更新迷你窗口。
这是Firefox中setApplicationIconImage
之后的效果图,红色箭头指向小窗口中保持不变的小图标:i.imgur.com/hsRTSk6.png
我不知道这种行为是否有意。我找到了nice demo project(以 ZIP 格式下载并打开“Play With Dock”项目)。我在 OS X 10.10 上看到了您在此处描述的相同行为(以及在您的其他一些类似问题中),不知道其他版本。最小化窗口上的图标始终是此处的捆绑图标。但是您可以从最小化窗口中删除应用程序图标:[[self.window dockTile] setShowsApplicationBadge:NO];
哈哈谢谢很好的发现。我的主题之间存在细微差别。就像捆绑包(1)图标关联,然后(2)在图标更改时强制更新appbundle,然后(3)在迷你窗口上设置迷你图标。我尝试了[[self.window dockTile] setShowsApplicationBadge:NO];
,您可以在此处看到 sn-p 并运行与运行以前的 sn-p 相同,但最小化具有选项卡的浏览器窗口:GitHubGIST :: Noitidart / _ff-addon-snippet-ObjC_SetShowsApplicationBadge.js 该函数对 >=10.5没有任何作用>
我认为将 setShowsApplicationBadge 设置为 false 然后设置为 true 会更新它,但它没有。然后我还尝试对某些东西执行 setMiniwindowImage 然后返回 nil 希望它会更新但也没有更新它,因为 sn-p 在这里:GitHubGIST :: Noitidart /_ff-addon-snippet-ObjC_SetMiniwindowImage.js。 :(您认为我可以尝试更新那个吸盘迷你图标的任何其他想法吗?以上是关于在运行时更改应用程序图标的主要内容,如果未能解决你的问题,请参考以下文章