2011-10-11 8 views
7

Có cách nào để có được các cạnh tròn trên UITableViewCell của một cách rằng:cách làm tròn các cạnh tròn trên UITableViewCell theo cách cho phép người dùng chọn màu nền ô? (Nhưng không sử dụng chế độ nhóm)

  1. phép màu nền di động để người sử dụng lựa chọn/tùy chỉnh vào thời gian chạy (tế bào có thể không phải tất cả có màu nền giống nhau)
  2. không sử dụng UITableView "nhóm" chế độ

vì vậy, tôi giả định này có nghĩa là tôi không thể sử dụng cách tiếp cận hình ảnh bình thường ở đây để có được các cạnh tròn, như trong trường hợp này nó sẽ không cho phép yêu cầu 1 ở trên

+1

Có lý do cụ thể nào không sử dụng chế độ được nhóm không? – sosborn

+0

chỉ là tôi đang gặp các vấn đề sau với hoạt ảnh thay đổi lề ở chế độ nhóm mà tôi không thể giải quyết được, vì vậy hy vọng không được nhóm lại có thể tốt hơn? http://stackoverflow.com/questions/7661054/how-to-fix-the-margin-adjustment-code-attached-for-a-grouped-uitableview – Greg

Trả lời

55

Vâng, có vẻ như bạn nên thử sử dụng CALayer. Vì UITableViewCell là một lớp con UIView, bạn có thể thao tác thuộc tính CALayer của nó.

Vì vậy, trước hết, hãy chắc chắn để #import <QuartzCore/QuartzCore.h>

Sau đó làm một cái gì đó như thế nào, ví dụ,

[cell.layer setCornerRadius:7.0f]; 
[cell.layer setMasksToBounds:YES]; 
[cell.layer setBorderWidth:2.0f]; 

khi bạn tạo tế bào. (Nếu bạn đang cố gắng tạo hiệu ứng như trong một bảng được nhóm, tôi giả sử bạn sẽ chỉ thao tác với các ô đầu tiên và cuối cùng.) Điều này sẽ cung cấp cho các ô được làm tròn các góc. Bằng cách thao tác với CALayer, bạn có thể tạo hiệu ứng bạn muốn.

Ngoài ra, hãy xem this answer để biết cách thực hiện điều này cho một số góc.

+0

cảm ơn Matt - hãy để tôi xem và thử điều này (bằng cách cách này - bạn không có bất kỳ ý tưởng hay nào về vấn đề riêng biệt/liên quan này mà tôi không cho là - http://stackoverflow.com/questions/7661054/how-to-fix-the-margin-adjustment-code-attached -for-a-grouped-uitableview) – Greg

+0

có nó Matthew - ta – Greg

+0

Matthew là chính xác, nhưng chỉ đơn giản là thiết lập các góc của layerRadius và maskToBounds là đủ. borderWidth sẽ cung cấp cho bạn một đường viền xung quanh hình ảnh mà bạn không muốn. Chỉ cần sử dụng: [cell.layer setCornerRadius: 10.0f]; [cell.layer setMasksToBounds: YES]; –