我想做这样的事情(在新的iTunes上):
正如您所看到的那样,当选择该行时,它的“突出显示”状态是一个圆角的行 我怎样才能实现这样的目标?
答案 0 :(得分:2)
您需要继承NSTableview
并覆盖-highlightSelectionInClipRect:
方法。
可以这样做:
在属性检查器中将tableView的突出显示模式从常规更改为源列表:
现在子类NSTableView
就像这样:
-(void)highlightSelectionInClipRect:(NSRect)theClipRect
{
NSRange visibleRowIndexes = [self rowsInRect:theClipRect];
NSIndexSet *selectedRowIndexes = [self selectedRowIndexes];
NSUInteger endRow = visibleRowIndexes.location + visibleRowIndexes.length;
NSUInteger row;
for (row=visibleRowIndexes.location; row<endRow; row++)
{
if([selectedRowIndexes containsIndex:row])
{
NSRect rowRect = NSInsetRect([self rectOfRow:row], 3, 4);
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rowRect xRadius:4.0 yRadius:4.0];
[[NSColor colorWithCalibratedRed:0.474 green:0.588 blue:0.743 alpha:1] set];
[path fill];
}
}
}
结果: