テキストフィールドとベゼルボタンのあるウィンドウがあります。縁がなく透過的ですが、問題はどのウィンドウでも再現されます。
そのウィンドウのコンテンツ ビューは、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 (私の OS も同様)、デプロイ ターゲットは 10.6 です。それはおそらく問題ではありませんが、私は過去に似たようなことをしてきましたが、そのような奇妙な問題は一度もありませんでした.