我有一个问题,因为狮子推出弹性滚动(下图)。当您将“我的表”视图(基于单元格的,以交替的行颜色)滚动到其边界之外时,背景不会绘制。我尝试在-[drawBackgroundInClipRect:]中进行自己的绘图,但似乎不能超出表视图的范围。如何将背景扩展到弹性滚动区域?

发布于 2015-01-08 18:13:49
在回答你的问题
超出其界限的视图通常是“不-否”。当使用交替背景色时,NSTableView直接绘制其背景。但是在基于视图的表视图中,使用的是NSTableRowView,如果它有自己的背景色,这将带来更大的挑战。
The Bad News
NSScrollView (及其各个部分)、NSTableView和NSTableHeaderView的组合本身是复杂的。一旦您将基于视图的功能抛到混合中(其中每一行都有一个视图,每个单元格都有自己的视图,每个单元格都被重用、动画化等等),重写此行为“是不可能的,儿子!”
The Good News
在弹性拉伸的滚动表视图中没有扩展的交替背景色的问题已经解决(至少在10.10,我可以知道),所以这不再是一个问题,除非您有自定义背景的行/单元格视图或仅仅是背景色。
自定义文档(滚动)视图的通用解决方案
对于所有希望扩展为弹性滚动的具有规则背景的滚动视图,您将需要一个自定义NSScrollView子类,该子类期望文档视图(自定义滚动视图)符合您定义的协议(如-(NSImage *)backgroundImageForClipViewBounds:)。滚动视图将观察其内容视图(NSClipView),用于边界、更改通知,并标记自身以供显示。当调用滚动视图的-drawRect:时,它将询问滚动视图的-backgroundImageForClipViewBounds: (通过您的协议)并将其绘制到自己中,从而使滚动视图的“无限背景”成为自己的。
我还没有验证过这个理论,但我相信它会成功的。我希望这能帮到你。
https://stackoverflow.com/questions/9445157
复制相似问题