【发布时间】:2014-07-08 04:09:51
【问题描述】:
在 OSX 10.10 beta 3 中,Apple 发布了他们的深色选项。不幸的是,这也意味着几乎所有的状态栏图标(除了我见过的 Apple 和 Path Finder 的图标),包括我的,在黑暗的背景下都保持黑暗。如何在应用深色时提供替代图像?
我没有在 NSStatusBar 或 NSStatusItem 上看到显示更改的 API 更改,我假设它是一个通知或一些反应性的东西,以便在用户更改色调时轻松进行更改。
用于绘制图像的当前代码包含在 NSView 中:
- (void)drawRect:(NSRect)dirtyRect
{
// set view background color
if (self.isActive) {
[[NSColor selectedMenuItemColor] setFill];
} else {
[[NSColor clearColor] setFill];
}
NSRectFill(dirtyRect);
// set image
NSImage *image = (self.isActive ? self.alternateImage : self.image);
_imageView.image = image;
}
【问题讨论】:
-
您是在自定义视图的
-drawRect:中手动绘制图像吗?改用NSImageView子视图有帮助吗? -
@KenThomases 应该添加当前代码。它现在就在那里。
-
您应该使用
-drawStatusBarBackgroundInRect:withHighlight:,而不是填充您自己选择的颜色。如果这样做没有帮助,您可以尝试在图像视图上设置背景样式。当然,这就提出了如何选择合适的风格的问题。另外,我会将图像视图的图像设置移动到-viewWillDraw。这种事情不应该在-drawRect:做。 -
感谢您的意见,但我相信您误会了。背景在适当的时候变暗,它的前景图像在现在黑暗的背景上仍然是一个黑暗的图像。我需要知道何时将其替换为白色前景图像。
-
我的意思是
NSImageView很有可能可以区分填充了您选择的颜色的背景和使用我提到的适当方法绘制的背景之间的区别。它可能会相应地改变其行为。另外,您使用的是模板图像吗?
标签: objective-c macos osx-yosemite nsstatusitem nsstatusbar