2013-10-01 22 views
11

Nếu tôi đặt màu đỏ separatorColor trên chế độ xem bảng trong iOS 7 và cũng đặt separatorInset thành UIEdgeInsetsZero hoặc bất kỳ giá trị inset tùy chỉnh nào khác, tất cả các hàng bổ sung hoặc "phụ" đều có dấu phân cách màu mặc định. Làm thế nào tôi có thể sửa lỗi này?Tại sao UITableView bỏ qua dấu phân cáchColor cho dấu phân cách "phụ" với tùy chỉnh separatorInset?

Câu cuối cùng của tài liệu trên separatorInset ngụ ý rằng nó bằng cách nào đó kiểm soát các hồ sơ bổ sung, nhưng tôi không thấy thế nào:

Trong iOS 7 và sau đó, tách tế bào không mở rộng tất cả các cách để cạnh của chế độ xem bảng. Thuộc tính này đặt giá trị mặc định cho tất cả các ô trong bảng, giống như rowHeight đặt chiều cao mặc định cho ô. Nó cũng được sử dụng để quản lý các dấu phân cách "phụ" được vẽ ở dưới cùng của các bảng kiểu đồng bằng.

Đặt tách trong viewDidLoad:

self.tableView.separatorColor = [UIColor redColor]; 

Và bạn có được điều này:

enter image description here

Và khi bạn thiết lập các separatorInset và một màu:

self.tableView.separatorInset = UIEdgeInsetsZero; // <- any custom inset will do 
self.tableView.separatorColor = [UIColor redColor]; 

Bạn có được điều này:

enter image description here

Tại sao điều này xảy ra và làm thế nào tôi có thể làm cho tất cả các thiết bị tách màu đỏ và đặt tất cả các insets tách về không? Đây có phải là một lỗi?

+0

Các vấn đề tương tự dường như xảy ra với bất kỳ dấu phân tách tùy chỉnh nào, không chỉ UIEdgeInsetsZero.May mắn thay, giải pháp được chấp nhận cũng làm việc với bất kỳ tùy chỉnh separatorInset nào. Cảm ơn! –

+0

Bắt tốt. Tôi đã cập nhật câu hỏi để bao gồm điều này. – Aaron

Trả lời

20

Giải quyết nó, nhưng tôi không thể giải thích tại sao.

Hoán đổi thứ tự của hai câu lệnh. Đặt màu đầu tiên, sau đó các hình chữ nhật:

self.tableView.separatorColor = [UIColor redColor]; 
self.tableView.separatorInset = UIEdgeInsetsZero; 

Tất cả mọi thứ hoạt động:

enter image description here

+0

Lạ lùng nhưng nó hiệu quả với tôi! –

+0

Đây là một hack. –

+1

Có. Bạn có thể cho chúng tôi biết tại sao câu trả lời của bạn không phải là hack? Nó không giải thích tại sao màu sắc không được tôn trọng. – Aaron

2

Hãy thử thêm này để cellForRowAtIndexPath. Cũng như thiết lập separatorInsets của tableView.

cell.separatorInset = UIEdgeInsetsZero;

Từ UITableViewCell iOS Documents:

@property (nonatomic) UIEdgeInsets separatorInset

Các giá trị inset cho nội dung của tế bào.

Bạn có thể sử dụng thuộc tính này để thêm khoảng cách giữa nội dung ô hiện tại và cạnh trái và phải của bảng. Giá trị inset tích cực di chuyển nội dung ô và phân tách ô vào trong và ra khỏi các cạnh của bảng. Các giá trị âm được coi như là inset được đặt thành 0.

Các vấn đề liên quan