我有一個窗口,裏面有一個自定義視圖。這個視圖得到了一個作爲背景繪製的圖像。現在我們假設它是一個結構化的灰色背景圖像。背景問題:NSView上的NSButton
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
[self.titlebarBGImage drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1];
}
在這個自定義視圖中,我添加了一個方形紋理按鈕,並在IB中將其配置爲沒有邊框。在我的AppDelegate我然後給該按鈕在applicationDidFinishLaunching
方法的圖像:
// ...
// [[self.minimizeButton cell] setBackgroundColor:[NSColor clearColor]];
[self.minimizeButton setImage:minimizeImage];
// ...
不知何故相同的背景(titlebarBGImage
)也繪製爲按鈕背景,因此它具有結構化灰色圖像,但縮放以適合按鈕大小。這看起來很愚蠢,並不是我想要的。如果我然後取消註釋setBackgroundColor:
的行,背景被清除,但自定義視圖背景也不會透過按鈕圖像透明的位置(按鈕圖像是圓形),所以我得到一個矩形,其中的窗口背景透過( ,即在示例圖像綠色),而不是視圖按鈕在背景
下面是一個圖像,使其清楚發生了什麼:
從上到下:
- 我要實現什麼,即觀點灰色結構BG彪炳按鈕透明區域
- 我上的代碼,即沒有註釋掉線獲得:自定義視圖背景繪製擠進按鈕背景
- 我得到什麼與
clearColor
線,即窗口顏色(綠色)閃耀通過,而不是視圖的bg。
如何獲得最高的結果?
編輯:我推了一個example project to github,以便你能看到我的意思。
我改變了標題,並希望有人發現這種風滾草。我仍然需要一個答案,thx – beipawel