我正在尝试使用NSScrollView重新创建一些可以在Apples Calendar应用程序(osx)中看到的功能。当您在日历应用程序中向上和向下滚动浏览视图的边界时,它不仅仅是一个空白区域,而是从日历本身扩展网格线。我想知道如何做到这一点?我希望答案会非常简单。像绘制内容视图大于需要的东西,然后在滚动视图上设置一些属性来约束它认为是可滚动内容。在倾注NSScrollView文档后,我还没有找到任何线索。如果答案相对简单,请原谅我,谢谢你的答案。
答案 0 :(得分:1)
您可以使用半私有方法在文档视图外部绘图:
- (void)drawBackgroundOverhangInRect:(NSRect)dirtyRect {
[[NSColor cyanColor] set];
NSRectFill(dirtyRect);
}
10.7之后可用
答案 1 :(得分:0)
就像NSScrollView文档所说的那样。使用:
-(void)setDocumentView:(NSView *)aView
在其上设置NSClipView。这保持绘制的内容大于显示的部分,并将滚动的部分在视图中不可见。您还应该看一下“可可绘图指南”。
答案 2 :(得分:0)
这是在Stackoverflow上的其他人的代码中采用的。此代码将水平网格绘制在表格的顶部。我想你可以改变它来绘制垂直网格。把它放在你的NSTableView
子类中:
- (void)drawGridInClipRect:(NSRect)clipRect
{
NSRect boundsToDraw = clipRect;
CGFloat yStart = 0;
if ( clipRect.origin.y < 0 ) {
while (yStart > NSMinY(boundsToDraw)) {
CGFloat yRowTop = yStart - self.rowHeight;
NSRect rowFrame = NSMakeRect(0, yRowTop, boundsToDraw.size.width, 1.0);
[[self gridColor] set];
NSRectFill(rowFrame);
yStart -= self.rowHeight;
}
}
}
答案 3 :(得分:0)
设置scrollView的背景以绘制正确的背景......由于没有动态内容,因此会复制日历效果