2011-01-08 69 views
9

我正在創建一個應用程序,我需要在其中透明的具有透明PNG圖像的NSView。問題是,我正在繪製的NSView上有一個灰色的背景。我有它的子類(如TransparentRectangleView),但不知道要在drawRect中放置什麼以使其透明。將NSView子類化爲透明背景

我已經覆蓋了isOpaque方法返回NO,但它似乎並沒有幫助...

另外,有已經是一個子類的NSView類似於iPhone的UIImageView的(只要我能在裏面添加子視圖,我需要在裏面添加一些文本)。

+1

是不是有在Interface Builder透明滑蓋的?我似乎記得無意中拒絕了我的一個觀點的不透明性。 – 2011-01-08 18:30:48

+1

我幾乎100%肯定地設定了整個視圖的透明度,包括兒童。這意味着我的所有按鈕和文字也會有1%的不透明度或其他。如果我錯了,請讓我知道:D – 2011-01-08 18:34:43

+1

等等,所以你只想要一個透明的背景顏色?我知道UIViews有一個可以使用的預定義透明顏色,雖然我沒有嘗試過使用它與NSViews。 – 2011-01-08 18:40:52

回答

16

要使視圖透明,只需使用[NSColor clearColor]填充視圖。

- (void)drawRect:(NSRect)rect { 
    [[NSColor clearColor] set]; 
    NSRectFill(rect); 
} 

isOpaque的默認實現返回NO,所以如果你是子類的NSView,而不是其他一些觀點,你不必擔心覆蓋它。

0

雨燕版本:

override func draw(_ dirtyRect: NSRect) { 

    NSColor.clear.set() 
    dirtyRect.fill() 
}