2016-04-28 150 views
4

當我將進度指示器的背景設置爲綠色時,它將按預期工作。NSProgressIndicator無法將背景顏色設置爲白色

代碼

loadingIndicator.wantsLayer = true 
loadingIndicator.layer?.backgroundColor = NSColor.greenColor().CGColor 

結果

enter image description here

但是,當我設置背景顏色爲白色,背景色保持灰色(而不是更改爲白色) 。

代碼

loadingIndicator.wantsLayer = true 
loadingIndicator.layer?.backgroundColor = NSColor.whiteColor().CGColor 

結果

enter image description here

爲什麼設置背景顏色爲白色不行,但綠色呢?我怎樣才能糾正這個問題?我在OS X 10.11.4上。

編輯:這顯然只有當進度指示器位於呈現爲彈出窗口的視圖內時纔會發生。

+0

在此的任何解決方案,具有在酥料餅的指示符相同的問題 –

回答

1

我找到了解決這個問題的方法。 NSProgressIndicator的CALayer有一個顯示你所看到的有色背景色的子圖層。隱藏該子圖層將不會顯示任何背景,並保持微調器可見。

CALayer *layer = [[self popoverProgressIndicator] layer]; 
CALayer *backgroundLayer = [[layer sublayers] firstObject]; 
[backgroundLayer setHidden:YES]; 

,我用的是解決方案here的NSPopover的內部時改變背景,我只看到了這個問題。

3

我在NSPopover內部使用NSProgressIndicator時遇到了同樣的問題。

我的解決方案是設置外觀像popover一樣。

popover.appearance = NSAppearance(named: NSAppearanceNameAqua) 
  • 試戴OSX 10.11.5/Xcode7.3.1
  • 除了NSAppearanceNameVibrantDark任何其他名稱還曾

我不知道爲什麼會這樣,但經過設置該屬性我得到了正確的白色背景顏色。

Screenshot: white background progress inside popover