我有一个文本框和窗口按钮的窗口。它是无边界和透明的,但是这个问题在任何窗口都会重现。可可粉窗口的圆角渐变背景
该窗口的内容视图在IB中设置为绘制窗口背景的自定义类。
下面的代码:
- (void)drawRect:(NSRect)dirtyRect
{
[NSGraphicsContext saveGraphicsState];
float cornerRadius = 10;
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:self.bounds xRadius:cornerRadius yRadius:cornerRadius];
[path setClip];
NSGradient *gradient = [[NSGradient alloc] initWithColorsAndLocations:
[NSColor colorWithCalibratedRed:0.96f green:0.96f blue:0.96f alpha:1.00f], 0.0f,
[NSColor colorWithCalibratedRed:0.84f green:0.84f blue:0.84f alpha:1.00f], 1.0f,
nil];
[gradient drawInRect:self.bounds angle:270];
[NSGraphicsContext restoreGraphicsState];
}
它会导致一些非常奇怪的文物,像消失的对象或文本字段的背景更改为窗口:
这是怎么回事?我试图隔离它,我一直在玩这个“图形上下文状态保存”的东西(我不知道我是否理解正确),但问题依然存在。
我有XCode 4.4,SDK是10.7(我的操作系统也是如此),部署目标是10.6。这可能没有关系,但过去我一直在做类似的事情,而且我从来没有遇到过这样奇怪的问题。
人说看起来像一个棘手的问题。 – loyalflow 2012-08-30 20:14:40
是的。是的。 – radex 2012-08-31 06:11:43