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
(如果您知道其他的方式,請告訴我,因爲我來自iPhone開發想念backgroundColor
財產UIView
)
然後,如果一個連接,如果檢測到,我畫它與2 NSPoint
s。此代碼有效,但我沒有得到它,只能在第一個NSView
上繪製子視圖。
我以爲這個解決方案,但我認爲這是一個醜陋的方式。那麼,我會這樣做。 – klefevre 2011-03-31 12:58:19
如果我需要原始子視圖來接收鼠標事件,頂部不被遮擋,繪製子視圖會怎麼樣? – 2012-01-22 15:19:09
您可以重寫超級視圖上的hitTest,以避免重疊視圖。 – 2013-02-05 00:09:45