我写了一个窗口和两个视图, 将窗口的背景颜色设置为蓝色, 并在view1中绘制图像, 并用带alpha的颜色填充view2,如下所示:
// AppDelegate中
[self.window setLevel:(NSStatusWindowLevel + 2)];
TestView *view1 = [[TestView alloc] initWithFrame:NSMakeRect(0, 0, self.window.frame.size.width, self.window.frame.size.height)];
TestView2 *view2 = [[TestView2 alloc] initWithFrame:NSMakeRect(0, 0, self.window.frame.size.width, self.window.frame.size.height)];
[self.window setContentView:view1];
[self.window.contentView addSubview:view2];
//视图1
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
NSImage *image = [NSImage imageNamed:@"testImage"];
[image drawInRect:dirtyRect];
}
//视图2
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
[[[NSColor redColor] colorWithAlphaComponent:0.5] set];
NSRectFill(dirtyRect);
}
但是当应用程序运行时,我发现我的窗口的背景颜色和View1的图像没有显示,只有view2显示,而且它是透明的,通过它可以看到桌面。
如果我没有添加subview view2,则应用程序正常运行,蓝色背景颜色和图像。
有人知道为什么,真的感谢你的帮助,我会在线等。
答案 0 :(得分:2)
我将NSRectFill更改为
NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver);
然后它向右转。