나는 사용자 정의 NSView
이 있고 그 위에 컨트롤이있는 하단 막대가 있으며 그 중 하나는 NSColorWheel
입니다.아래쪽 막대 위에 사용자 정의 NSView 채우기 페인트
사용자의 NSView가 300px로 높고 하단 바가 32px 높다는 이유로 간단하게 Window의 높이는 332px입니다.
하단 막대의 한 부분으로 만들어 내 awakeFromNib
앱이 다음 코드를 사용하여 창을로드 : 나는 색으로 사각형을 채울 내 사용자 지정 NSView
클래스에서
[[self window] setAutorecalculatesContentBorderThickness:YES forEdge:NSMinYEdge];
[[self window] setContentBorderThickness: 32.0 forEdge: NSMinYEdge];
합니다. 사용하여 응용 프로그램로드가 내 NSView
클래스에서 다음과 같은 경우에 모든 것이 잘 작동 : I 이후 하단 바의 컬러 휠이 변경 될 때 사용자 지정 NSView
의 색상을 변경하는 방법을 호출하는 경우,
- (void)drawRect:(NSRect)dirtyRect
{
dirtyRect = [self bounds];
NSColor * mNewColor = [NSColor blackColor];
[mNewColor set];
[NSBezierPath fillRect:dirtyRect];
}
그러나, 아래쪽 막대가 색상으로 덮어 쓰게됩니다. 다음 코드는이 방법을 보여줍니다 (이 코드는 사용자 정의 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
부모 창으로 매핑이 아닌 사용자 정의 NSView
내가 setNeedsDisplay
및 전화로 아직 내가 마우스를 (심지어 단지의 경우 사용하여 창 크기를 조정할 때 조정이 제대로 바인딩 표시하는 이유!
는 내가 이해하지 못하는 것은 1 픽셀 씩).
D o 어떻게 든 다시 그리기의 하단 막대를 설명해야합니까?
모든 도움을 주셨습니다.
완벽한가 :
자세한 내용은 여기를 참조하십시오. 나는'drawRect'가 문서에서 지정된대로'setNeedsDisplay'에 의해 호출되고 있다는 것을 깨닫지 못했습니다 ;-) 어쨌든'drawRect'는 초기화 메소드 였을뿐입니다. – Hooligancat