我正在尝试使用 NSScrollView 重新创建一些可以在 Apples Calendar 应用程序 (osx) 中看到的功能。当您在日历应用程序中向上和向下滚动超出视图边界时,它不仅仅是一个空白区域,而是从日历本身扩展了网格线。我想知道如何做到这一点?我希望答案会很简单。比如绘制比需要更大的内容视图,然后在滚动视图上设置一些属性来限制它认为是可滚动内容的内容。在翻阅 NSScrollView 文档后,我还没有找到任何线索。如果答案相对简单,请原谅我,并感谢您的任何答案。
问问题
793 次
4 回答
0
设置滚动视图的背景以绘制正确的背景......这会重复日历效果,因为没有动态内容
于 2014-03-14T15:26:49.037 回答
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;
}
}
}
于 2014-03-14T15:14:14.247 回答
0
它几乎就像 NSScrollView 文档所说的那样。利用:
-(void)setDocumentView:(NSView *)aView
在上面设置一个 NSClipView。这会保存大于显示部分的绘制内容,并将滚动不可见的部分进入视图。您还应该看看“可可绘图指南”。
于 2013-01-01T15:56:24.470 回答
0
您可以使用半私有方法在文档视图之外绘制:
- (void)drawBackgroundOverhangInRect:(NSRect)dirtyRect {
[[NSColor cyanColor] set];
NSRectFill(dirtyRect);
}
10.7 后可用
于 2015-10-06T09:50:52.560 回答