我正在创建一个应用程序,我需要一个透明的NSView,里面有透明的PNG图像。问题是,我正在绘制的NSView上有一个灰色背景。我有它子类(作为TransparentRectangleView),但不知道在drawRect中放什么使它透明。
我已经覆盖了isOpaque方法以返回NO但它似乎没有帮助......
或者,是否已经存在类似于iPhone的UIImageView的子类NSView(只要我可以在里面添加子视图,我需要在里面添加一些文本)。
答案 0 :(得分:17)
要使视图透明,只需使用[NSColor clearColor]填充它。
- (void)drawRect:(NSRect)rect {
[[NSColor clearColor] set];
NSRectFill(rect);
}
isOpaque的默认实现返回NO,因此如果您是子类化NSView而不是其他视图,则无需担心覆盖它。
答案 1 :(得分:10)
由于我的窗户不透明,所接受的答案对我不起作用。正如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
}
答案 2 :(得分:0)
Swift版本:
override func draw(_ dirtyRect: NSRect) {
NSColor.clear.set()
dirtyRect.fill()
}