2013-05-06 26 views
10

Tôi đang tìm cách xóa màu phân cách trong Chế độ xem NSTableView.Thay đổi màu phân cách thành nền hoặc xóa màu khỏi NSTableView

Nó trông như thế này:

enter image description here

Đối với UITableView có một phương pháp setSeparatorColor: nhưng không phải cho NSTableView.

Giải pháp sẽ được đánh giá cao.

+0

http://stackoverflow.com/questions/3032802/nstableview-get-rid-blank-space-separating-columns – Harikrishnan

+0

@ Harikrishnan: đã được kiểm tra nhưng điều đó không có tác dụng với tôi, tôi cũng phải tăng viewSize. –

Trả lời

13

Tôi đã làm điều này như:

Thay đổi khoảng cách Intercell tới:

[aTableView setIntercellSpacing:NSMakeSize(0, 0)]; 

Và thay đổi chiều cao của các tế bào, chiều rộng thiết lập quan điểm của để 30.f, các tế bào được rút ra là của 35.f.

Bây giờ nó là hoàn hảo, màn hình shot:

enter image description here

8

Đối NSTableView, Interface Builder có cài đặt cho Horizontal Grid, Vertical Grid, và Grid Color. Chúng được phản ánh trong API dưới dạng -setGridStyleMasksetGridColor.

Chúng thực hiện chính xác những gì bạn muốn.

[table setGridColor:[NSColor clearColor]]; 
[table setGridStyleMask:NSTableViewGridNone]; 
+0

Tôi muốn màu trong suốt. –

+0

Nếu bạn đặt lưới thành không, màu duy nhất sẽ là màu nền của bạn, giống như bạn đã yêu cầu. Nếu bạn muốn nó là một màu khác, bạn có thể đặt nó thành một màu trong suốt khác một phần. Bất kỳ màu nào cũng có thể có một bộ trong suốt (alpha). –

+0

Tôi đã kiểm tra bằng cách này, vẫn hiển thị trong chế độ xem bảng dựa trên: ( –

0

Có lẽ tôi có thể đề cập rằng trong bảng dựa trên khung nhìn, NSTableRowView có trách nhiệm vẽ các bộ phân tách. Vì vậy, trong thanh tra cho bảng bạn đặt lưới thành "Không" và triển khai drawSeparatorInRect: trong lớp con NSTableRowView của bạn, trong trường hợp của bạn có nghĩa là để trống nó.

+0

có điểm của bạn về phân lớp là chính xác. Nhưng tôi đã làm điều đó mà không có phí. Như bạn đã thấy trong giải pháp của tôi. –

+3

Nếu bạn tắt chế độ xem lưới trong một NSTableView, drawSeparatorInRect: không được gọi. –

0

IMHO, api NSTableView hơi lạ.

Ví dụ: Nếu bạn đặt lưới thành "Không" HOẶC "NSTableViewSolidVerticalGridLineMask" thì drawSeparatorInRect: không được gọi. Thực sự !!!

Vì vậy drawSeparatorInRect: được gọi là OMLY khi NSTableViewSolidHorizontalGridLineMask

Vậy làm thế nào để tôi tùy chỉnh lưới dọc ?? Tôi không thể dễ dàng? Mà không cần phải thâm nhập vào NSTableView quái vật

+0

Tôi tìm thấy giải pháp cho vấn đề của mình, đặt chế độ xem bảng thành NSTableViewGridNone hơn ghi đè drawRect: trong NSTableRowView tùy chỉnh của bạn để vẽ lưới một phần hoặc bất kỳ thứ gì bạn muốn, vì vậy sau khi tất cả cacao rất linh hoạt. –

2

trả lời cho Interface Builder:

enter image description here