カスタムのウィンドウがあり、NSView
コントロールのある下部バーがあります。そのうちの1つはですNSColorWheel
。
簡単にするために、ウィンドウの高さは332ピクセルで、カスタムNSViewの高さは300ピクセル、下部のバーの高さは32ピクセルです。
下部のバーはawakeFromNib
、アプリが次のコードを使用してウィンドウをロードするときに、私の一部として作成されます。
[[self window] setAutorecalculatesContentBorderThickness:YES forEdge:NSMinYEdge];
[[self window] setContentBorderThickness: 32.0 forEdge: NSMinYEdge];
カスタムNSView
クラスでは、長方形を色で塗りつぶします。NSView
私のクラスで以下を使用してアプリをロードすると、すべてが正常に機能します。
- (void)drawRect:(NSRect)dirtyRect
{
dirtyRect = [self bounds];
NSColor * mNewColor = [NSColor blackColor];
[mNewColor set];
[NSBezierPath fillRect:dirtyRect];
}
ただし、その後、下部のバーのカラーホイールが変更されたときにカスタムの色を変更するメソッドを呼び出すとNSView
、下部のバーが色で上書きされます。次のコードは、このメソッドを示しています(このコードはカスタムNSView
クラスにあります:
- (void)changeBackgroundColor:(NSNotification *)notification
{
NSLog(@"Changed background color");
NSRect mRect = [self bounds];
NSColor * mNewColor = [theColorWell color];
[mNewColor set];
[NSBezierPath fillRect:mRect];
[self setNeedsDisplay:YES];
}
ウィンドウのサイズを変更すると問題はすぐに修正されますが、明らかなバグのためにユーザーがウィンドウのサイズを変更する必要はありません。
私が理解していないのは、呼び出したときにbounds
カスタムではなく親ウィンドウにマッピングされているように見えるのに、マウスを使用してウィンドウのサイズを変更すると(1ピクセルだけでも)境界が正しく調整される理由です。NSView
setNeedsDisplay
再描画の一番下のバーをどうにかして説明する必要がありますか?
ありとあらゆる助けが大いに感謝されます。