2009-10-13 25 views
25

Tôi gặp sự cố khi UITableView (kiểu nhóm) của tôi có một "đầu" màu đen phía trên góc tròn của nó.Góc màu đen trên phong cách nhóm UITableView

Tôi đang thiết lập nền của tableview như vậy:

[meetingTableView setBackgroundColor:[[UIColor alloc] initWithPatternImage:[[UIImage alloc] initWithContentsOfFile:@"background.png"]]]; 

Và xem bảng của tôi kết thúc lên tim như thế này:

black pointy edge on rounded corner http://papernapkin.org/pastebin/resource/images/imageEntryId/6487

Bất kỳ ý tưởng làm thế nào tôi có thể thoát khỏi của những điểm đen đó?

+3

Chỉ cần để kiểm tra, nó hoạt động một cách chính xác khi bạn chỉ định một màu sắc, như '[UIColor blueColor]' hoặc '[UIColor groupTableViewBackgroundColor] '? Ngoài ra, những gì bạn làm có thể tạo ra một rò rỉ bộ nhớ: bạn nên sử dụng '[UIColor colorWithPatternImage:]' thay thế. –

Trả lời

54

Tôi gặp vấn đề tương tự. Khi tôi đặt màu sắc rõ ràng bằng xib, tôi có góc sau Giải pháp là đặt mã theo mã!

(Vấn đề tương tự với xây dựng giao diện tồn tại cho WebViews)

+0

Điều này làm việc cho tôi khi không có gì khác làm được. Đặt màu nền trong IB thành màu bảng Chế độ xem nhóm (mặc định). Sau đó, trong mã, thiết lập màu sắc để clearColor. Tôi cũng có các ô được đánh dấu là opaque = NO và clearsContextBeforeDrawing = NO, nhưng những cài đặt đó không thay đổi gì cho đến khi tôi thêm clearColor theo mã – Bdebeez

+0

Làm việc cho tôi. Cảm ơn Amine. – iOSDevSF

+0

cũng làm việc cho tôi :) nhưng đó là một hành vi lạ .. –

1

Để tránh các góc màu đen, bạn phải đảm bảo rằng các UITableViewCells không bị mờ. Có vẻ như bạn đang sử dụng các ô của bảng kiểu tùy chỉnh và giá trị mặc định cho mờ là CÓ. Hoặc đi đến Trình tạo giao diện và bỏ chọn hộp kiểm mờ nếu ô bảng được thiết lập trong tệp XIB. Hoặc sử dụng thiết lập setOpaque:NO để thay đổi giá trị.

Bởi vì chế độ xem ô của bảng vẫn có khung hình chữ nhật ngay cả với các góc được làm tròn, nên chế độ xem ô và khung nhìn bảng thực tế không gây ra các góc đen đó.

+0

Hiện tại không có máy Mac của tôi nên tôi sẽ kiểm tra lại sau. Nhưng nếu chúng không đục, các tế bào bảng sẽ không trong suốt và do đó không phải là màu trắng? – ThaDon

+0

Không bị mờ không giống như có giá trị alpha <1.0; nó là một tối ưu hóa cho hệ thống vẽ, để cho hệ điều hành biết liệu nó có phải làm việc tổng hợp đắt tiền hơn không, hoặc chỉ có thể giả định khung nhìn lấp đầy toàn bộ khung của nó. –

+0

Điều này làm việc cho tôi trên nền không phải màu đỏ trong chế độ xem sở hữu. Khi các góc màu đen trắng xuất hiện trở lại. (Trong trình mô phỏng, anyway.) –

3

Chỉ trong trường hợp bạn là chưa biết, there's another neat technique bạn có thể sử dụng để làm hình nền tùy biến cho UITableViews:

Không khá đơn giản như việc thiết lập nền như bạn đang làm, nhưng nó mang lại cho bạn rất nhiều tính linh hoạt và có thể mở rộng đến bất kỳ kích thước bảng nào.

0

Tôi đoán là nó liên quan đến thứ gì đó bạn đang làm trong các ô xem bảng tùy chỉnh của mình. Bạn có thể muốn thử nghiệm với thiết lập màu nền của ô thành [UIColor clearColor].

0

Tôi nghĩ bạn nên đặt màu nền của bảng là clearColor và tắt chế độ xem của bạn với hình nền.

Sau đó, nó chắc chắn sẽ không hiển thị các góc màu đen. Nhưng cũng đừng quên để thiết lập màu nền của di động của bạn như màu trắng

16

Hãy thử điều này trong phương pháp điều khiển của bạn viewDidLoad:

meetingTableView.backGroundColor = [UIColor ClearColor]; 

hy vọng nó sẽ giúp!

0

Câu trả lời được bỏ phiếu ở trên (đặt nền của tableView thành [UIColor clearColor]) có thể không hoạt động cho bạn nếu bạn giống tôi và không bao giờ sử dụng UITableViewController, thay vào đó đặt UITableView bên trong UIViewController.

Trong trường hợp này, nó không phải là tableView cần phải có nền tảng rõ ràng, nhưng chế độ xem chứa chế độ xem bảng.

Đây không phải là trực quan, nhưng nó hoạt động cho tôi. Trong xây dựng giao diện bạn chỉ có thể thiết lập màu nền quan điểm của cha mẹ để xóa màu, hoặc bạn có thể làm điều tương tự trong mã trong viewDidLoad với:

self.view.backgroundColor = [UIColor clearColor]; 

Tôi đoán lý do cho các góc đen là một cái gì đó về nội tối ưu hóa đồ họa, và thiết lập nền rõ ràng sửa chữa nó.

+0

Câu trả lời đó có hiệu quả đối với tôi trên iOS4 (đã ổn trên iOS5) –

2

Có lẽ nếu bạn đặt yourTableViewOutlet.backgroundView=nil;

+0

Một lời giải thích ngắn gọn sẽ là tuyệt vời. –

3

Bạn sẽ nhận được góc đen trên UITableView Nhóm Phong cách nếu bạn thiết lập màu nền để xóa màu trong XIB.

Thay vì thử mã này để loại bỏ các góc đen trên UITableView Nhóm Phong cách

tableViewObject.backgroundColor=[UIColor clearColor];

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