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() 
}