macos – NSOutlineView渐变背景

我正在尝试使用渐变背景实​​现NSOutlineView子类:

- (void)drawBackgroundInClipRect:(NSRect)clipRect {
    [gradient drawInRect:clipRect angle:90];
}

它几乎可以用于:

但是当我调整视图大小时,渐变“中断”:

除了在项目覆盖的区域之外,所有地方都会正确渲染渐变.当我更改窗口的关键状态(通过切换到另一个应用程序)时,该区域也会正确呈现,就像我折叠队列项一样.我错过了什么?调整大小后,我该怎么做才能更新该区域的背景?

解决方法

剪辑矩形是已更改的区域,不一定是渐变的整个区域.如果希望渐变从视图的(可见区域)的顶部开始,并在视图的(可见区域)的底部结束,则需要每次都使用相同的矩形绘制渐变.

使用the NSRectClip function剪辑到给定的矩形,这将限制你的绘图,然后问自己(大纲视图)your enclosing scroll view,询问滚动视图the visible rect,并告诉滚动视图到convert that rect to the outline view’s coordinate system.

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...