2
일부 서브 뷰가있는 내 NSView
의 맨 위에 그리려하고 있습니다. 사실 Interface Builder의 연결선 스타일을 재현하려고합니다. 여기이 순간을 위해 사용하고 코드입니다 :NSView의 서브 뷰를 그리는 방법
- (void)drawRect:(CGRect)dirtyRect
{
// Background color
[[NSColor whiteColor] setFill];
NSRectFill(dirtyRect);
// Draw line
if(_connecting)
{
CGContextRef c = [[NSGraphicsContext currentContext] graphicsPort];
[[NSColor redColor] setStroke];
CGContextMoveToPoint(c, _start.x, _start.y);
CGContextAddLineToPoint(c, _end.x, _end.y);
CGContextSetLineWidth(c, LINE_WIDTH);
CGContextClosePath(c);
CGContextStrokePath(c);
}
}
첫 번째 부분은 색상입니다 내 NSView
(당신이 다른 방법을 알고 있다면, 내가 아이폰 개발에서 오는 원인 '제발 말해 나는 backgroundColor
를 그리워 UIView
의 속성)
그런 다음 연결이 감지되면 2 NSPoint
으로 그립니다. 이 코드는 작동하지만 첫 번째 NSView
에만 서브 뷰를 그릴 수는 없습니다.
나는이 솔루션을 생각해 보았지만 이것이 추한 방법이라고 생각했습니다. 글쎄, 내가 할거야. – klefevre
마우스 이벤트를 수신하기 위해 원래의 하위 뷰를 필요로한다면, 하위 뷰를 그리면서 맨 위에 표시되지 않습니까? –
superview에서 hitTest를 오버라이드하여 오버레이보기에 결코 도달 할 수 없습니다. –