我正在创建一个应用程序,我需要在其中透明的具有透明PNG图像的NSView。问题是,我正在绘制的NSView上有一个灰色的背景。我有它的子类(如TransparentRectangleView),但不知道要在drawRect中放置什么以使其透明。将NSView子类化为透明背景
我已经覆盖了isOpaque方法返回NO,但它似乎并没有帮助...
另外,有已经是一个子类的NSView类似于iPhone的UIImageView的(只要我能在里面添加子视图,我需要在里面添加一些文本)。
我正在创建一个应用程序,我需要在其中透明的具有透明PNG图像的NSView。问题是,我正在绘制的NSView上有一个灰色的背景。我有它的子类(如TransparentRectangleView),但不知道要在drawRect中放置什么以使其透明。将NSView子类化为透明背景
我已经覆盖了isOpaque方法返回NO,但它似乎并没有帮助...
另外,有已经是一个子类的NSView类似于iPhone的UIImageView的(只要我能在里面添加子视图,我需要在里面添加一些文本)。
要使视图透明,只需使用[NSColor clearColor]填充视图。
- (void)drawRect:(NSRect)rect {
[[NSColor clearColor] set];
NSRectFill(rect);
}
isOpaque的默认实现返回NO,所以如果你是子类的NSView,而不是其他一些观点,你不必担心覆盖它。
接受的答案不适用于我,因为我的窗口是不透明的。作为http://www.drissman.com/blog/archives/2009/10/09/nsrectfill_and_nscolor_clearcolor.html(和下面的讨论)说,下面的代码工作:
- (void)drawRect:(NSRect)rect {
[[NSColor clearColor] set];
NSRectFillUsingOperation(rect, NSCompositeSourceOver);
// do other drawings
}
雨燕版本:
override func draw(_ dirtyRect: NSRect) {
NSColor.clear.set()
dirtyRect.fill()
}
是不是有在Interface Builder透明滑盖的?我似乎记得无意中拒绝了我的一个观点的不透明性。 – 2011-01-08 18:30:48
我几乎100%肯定地设定了整个视图的透明度,包括儿童。这意味着我的所有按钮和文字也会有1%的不透明度或其他。如果我错了,请让我知道:D – 2011-01-08 18:34:43
等等,所以你只想要一个透明的背景颜色?我知道UIViews有一个可以使用的预定义透明颜色,虽然我没有尝试过使用它与NSViews。 – 2011-01-08 18:40:52