【问题标题】:Change app icon during runtime在运行时更改应用程序图标
【发布时间】:2015-01-15 21:08:18
【问题描述】:

在 OSX 10.5+ 中,应用程序图标绘制在小型化窗口上。

注意“应用程序图标自动定位在磁贴中”。

如何使用 Objective-c 更改应用程序图标?还是其他方法?

【问题讨论】:

    标签: objective-c macos icons core-foundation dock


    【解决方案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。 :(您认为我可以尝试更新那个吸盘迷你图标的任何其他想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2014-01-22
    • 2012-02-22
    • 2014-08-12
    • 1970-01-01
    相关资源
    最近更新 更多