2010-02-13 32 views
8

Tôi đang thêm UILabel vào mỗi ô trong chế độ xem bảng của mình. Điều này không có vấn đề gì ban đầu. Khi tôi làm tròn các góc của UILabel bằng cách sử dụng layer.cornerRadius, việc cuộn chế độ xem bảng sẽ dừng lại.UITableView có thể thu thập dữ liệu khi thêm UILabel với gócRadius vào mỗi ô

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; 
label1.backgroundColor = ([[managedObject valueForKey:@"color"] hasPrefix:@"FFFFFF"]) ? [UIColor blackColor] : color; 
label1.layer.cornerRadius = 10.0f; 
[cell addSubview:label1]; 
+0

Bạn có thể muốn xem [cách Tweetie thực hiện] (http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/) (cuộn trơn tru). – icktoofay

Trả lời

7

Tôi đã thử điều này trước bản thân mình và thấy rằng vô ích đối với bất kỳ loại chế độ xem nào di chuyển. Bạn nên tạo một hình ảnh với các góc tròn và thêm nó làm nền của nhãn của bạn để thay thế.

+0

Đây không phải là giải pháp thực sự tốt bởi vì trên các nhãn có kích thước khác nhau, hình ảnh sẽ bị kéo dài và bán kính góc được tạo bởi hình ảnh sẽ khác với các hình khác .. –

15

Không cần cho một hình ảnh với góc rouned - xem câu trả lời bằng cách fknrdcls cho câu hỏi này:

UILabel layer cornerRadius negatively impacting performance

Về cơ bản, bạn chỉ cần cho nhãn của bạn có nền trong suốt, và thêm backgroundcolor đến lớp thay thế. Sau đó, bạn có thể tắt maskToBounds, cải thiện đáng kể hiệu suất. Vì vậy, mã của bạn sẽ trở thành:

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; 
label1.backgroundColor = [UIColor clearColor]; 
label1.layer.backgroundColor=[UIColor whiteColor].CGColor; 
label1.layer.cornerRadius = 10.0f; 
label1.layer.masksToBounds = NO; 
label1.layer.shouldRasterize = YES; 
+0

+1 Tôi thực sự thích giải pháp này, nhưng tôi cần ** chỉ một số góc làm tròn **. Cách giải quyết của tôi là: Để chỉ hiển thị các góc trên cùng và dưới cùng bên phải, tôi thêm một khung nhìn con với giá trị âm trên 'frame.origin.x' và gán' angleRadius' cho 'layer' của nó. Nếu ai đó tìm thấy một giải pháp tốt hơn cho nhu cầu đó, tôi quan tâm. – anneblue

0

cho UIImageXem mẹo UILabel không hoạt động vì tôi cũng phải cắt hình ảnh chứ không phải màu nền. giải pháp nhanh nhất tôi tìm thấy là rasterize cha mẹ của view bất cứ khi nào tôi làm động nó (tôi có một bảng trượt).

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