我想在NSView中绘制图像背景,并在其上放置一些也具有透明背景的元素。
我已经覆盖了NSView的draw rect:
- (void)drawRect:(NSRect)rect
{
[NSGraphicsContext saveGraphicsState];
NSImage *image = [NSImage imageNamed:@"header_background.gif"];
[image drawInRect:CGRectMake(0, rect.size.height - 75, rect.size.width, 75) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
[NSGraphicsContext restoreGraphicsState];
}
NSWindow init:
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag
{
self = [super initWithContentRect:contentRect styleMask:aStyle backing:bufferingType defer:flag];
if (self) {
[self setOpaque:NO];
[self setHasShadow:YES];
[self setBackgroundColor:[NSColor clearColor]];
}
return self;
}
之后有一种奇怪的效果。滑块和按钮的背景有时也会闪烁
我做错了什么?
答案 0 :(得分:1)
嗯,首先,在绘制图像时会忽略您的“颜色”,因此没有做任何事情。其次,我在这里看到的代码可能不会导致问题,你可以发布文件的其余部分吗?
现在我怀疑你可能已经将这个视图标记为不透明,当它不是,或者你的视图层次结构中有其他奇怪的东西。