这是我的第一个问题,我将尽可能清楚地做到这一点.
我想在基于视图的NSTableView中的选定行上绘制自定义渐变,同时添加细微的凸起效果.为此,我需要为所选行之前和之后的网格线使用较暗的颜色(请参阅此处的示例).我drawSeparatorInRect:在NSTableRowView中有overrode方法来绘制所选行的自定义分隔线(使用isSelected方法作为标志),但我不能对上面/下面的那个做同样的事情(因为我在底部/顶部画线).
我已经尝试了几种方法来告诉最近的一行,它应该绘制一个较暗的分隔线而没有成功,因为显示步骤不遵循相同的顺序(我用NSLogs检查了它drawSeparatorInRect:,而且似乎当你滚动一点这个订单变更).因此,有时(主要是在滚动之后)该行不知道它应该使用更暗的颜色,因为它在所选择的之前绘制自己(我想在这一点上,所选行还没有意识到它被选中,否则我不明白发生了什么事.
我试过的一些事情:
drawSeparatorInRect:所选行的方法中,我尝试访问兄弟视图([superview subviews])并强制上一个/下一个再次绘制自己.NSTableView子类中,在selectedIndexes更改时直接修改最近的行.drawSeparatorInRect:显示的方法中绘制所选行之外的行.请注意,我这样做:行查询询问是否选择了上一个/下一个,一个nearestRowIsSelected标志或外部调用方法来"强制"暗色.
我现在所拥有的是所选行绘制了顶部和底部边框,因此其中一个被放置在前一个/下一个行线上......它很微妙但它仍然存在.
任何帮助都会受到好评.
先感谢您.
!我没有发布任何代码,因为问题不存在(它只是[NSBezierPath fillRect:rect]用红色调用),我想...所以我没有任何东西可以显示.