我有一個NSScrollView,它被設置爲通過單擊IB中的滾動視圖上的圖層複選標記來支持圖層。在那個scrollview中我有一個NSTableView。在那個NSTableView中,我使用自定義的NSTableRowView在我的列之間的分隔符處繪製垂直的紅線。我的NSTableView有2列。將我的scrollview設置爲圖層後備,無論何時拖動列分隔線以使列變寬或變窄,drawBackgroundInRect都不會被調用,因此我的背景垂直線在拖動操作期間不會更新。drawBackgroundInRect在圖層背景視圖中未調用
是否有解決方法?
下面是我使用的drawBackgroundInRect代碼:
- (void)drawBackgroundInRect:(NSRect)dirtyRect {
[super drawBackgroundInRect:dirtyRect];
NSGraphicsContext *nscontext = [NSGraphicsContext currentContext];
[nscontext saveGraphicsState];
CGContextRef context = (CGContextRef)[nscontext graphicsPort];
if (!self.isGroupRowStyle) {
CGRect leftColumnRect = [(NSView *)[self viewAtColumn:0] frame];
leftColumnRect.origin.y -= 1.0;
leftColumnRect.size.height += 2.0;
leftColumnRect.size.width += 1.0;
// grey background
CGContextSetGrayFillColor(context, 0.98, 1.0);
CGContextFillRect(context, leftColumnRect);
// draw nice red vertical line
CGContextBeginPath(context);
CGContextSetRGBStrokeColor(context, 0.6, 0.2, 0.2, 0.3);
CGContextMoveToPoint(context, leftColumnRect.size.width + 1.5, 0);
CGContextSetLineWidth(context, 1.0);
CGContextAddLineToPoint(context, leftColumnRect.size.width + 1.5, leftColumnRect.size.height);
CGContextStrokePath(context);
}
[nscontext restoreGraphicsState];
}
這裏的調整列時,我發現了問題:
,這是它應該是什麼就像我沒有將我的滾動視圖設爲圖層支持時一樣:
謝謝!