OS X 停靠图标中的 NSProgressIndicator 显示为灰色,如何制作标准蓝色

Posted

技术标签:

【中文标题】OS X 停靠图标中的 NSProgressIndicator 显示为灰色,如何制作标准蓝色【英文标题】:NSProgressIndicator in OS X dock icon, is showing grey, how to make standard blue 【发布时间】:2012-07-25 23:21:40 【问题描述】:

我想在我的应用程序的停靠图标中显示一个进度条。它可以工作,但由于某种原因,它将进度条显示为灰色条,而不是标准的蓝色条。我使用了在another SO question 上找到的代码。我做错了什么?

NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0.0f, 0.0f, 80.0f, 20.0f)];
[progressIndicator setStyle:NSProgressIndicatorBarStyle];
[progressIndicator setIndeterminate:NO];
[[[NSApplication sharedApplication] dockTile] setContentView:progressIndicator];
[progressIndicator setDoubleValue:50];
[[[NSApplication sharedApplication] dockTile] display];

【问题讨论】:

我查看了 HandBrake 的源代码,他们完全手动绘制进度条。也许这就是每个人在这种情况下都会做的事情。 【参考方案1】:

如果不对进度指示器进行子类化并进行自己的绘图,我不确定这是否可行。我认为问题在于码头瓷砖不是关键(而且不可能?)。非键窗口中的进度指示器将是灰色的,我假设停靠图块也是如此。将进度指示器设为 firstResponder 也无济于事。

【讨论】:

我自己画完了。【参考方案2】:

我不确定它为什么会改变,但它是由这个 API 设置的:setControlTint:,例如NSBlueControlTint 使其变为蓝色。

【讨论】:

我试过了,但它不起作用。如果您记录控制色调,它会记录为蓝色,但仍然是灰色。 也许您可以使用dataWithPDFInsideRect: 来捕获视图的绘图,从中创建一个NSImage,然后绘制图像。 (可能需要先将视图放在屏幕外窗口中,您可以“激活”以绘制正确的状态;我不确定。)

以上是关于OS X 停靠图标中的 NSProgressIndicator 显示为灰色,如何制作标准蓝色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 wxPython 应用程序中更改 Mac OS X 停靠图标

删除 Mac OS X 中 shell 可执行文件的停靠图标?

如何使用 setContentView 更改停靠图标以在 mac os x 中显示一个大字符

Java OS X - 停靠栏中没有应用程序图标[重复]

在最小化到停靠后恢复 Qt 应用程序,使用 OS X 上的停靠快捷方式

应用程序未运行时的 OS X 停靠菜单