Change selection color on view-based NSTableView

前端 未结 13 2099
别跟我提以往
别跟我提以往 2020-12-07 19:11

Standard highlighting color in OS X applications is blue.

Is it possible to change it to another color, e.g. gray?

Note that I am using the new view-based

13条回答
  •  情深已故
    2020-12-07 19:36

    Since you're using the view based NSTableView, you can subclass NSTableRowView, feed it to the table delegate method - (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row;, then customize your selection in the row view class.

    Here's an example:

    - (void)drawSelectionInRect:(NSRect)dirtyRect {
        if (self.selectionHighlightStyle != NSTableViewSelectionHighlightStyleNone) {
            NSRect selectionRect = NSInsetRect(self.bounds, 2.5, 2.5);
            [[NSColor colorWithCalibratedWhite:.65 alpha:1.0] setStroke];
            [[NSColor colorWithCalibratedWhite:.82 alpha:1.0] setFill];
            NSBezierPath *selectionPath = [NSBezierPath bezierPathWithRoundedRect:selectionRect xRadius:6 yRadius:6];
            [selectionPath fill];
            [selectionPath stroke];
        }
    }
    

提交回复
热议问题