UITableViewCell
, UILabel
, và UIButton
đều lớp con của UIView
và tài liệu dành UIView
nói:
Layout và subview quản lý
- Một quan điểm có thể chứa số không hay nhiều subviews.
- Mỗi chế độ xem xác định hành vi thay đổi kích thước mặc định của chính nó liên quan đến chế độ xem gốc.
- Chế độ xem có thể thay đổi kích thước và vị trí của các bản xem phụ theo cách thủ công khi cần.
Vì vậy, nó chắc chắn có thể làm được.
Bạn có thể tạo nhãn và nút của bạn sử dụng initWithFrame:
với lập luận CGRectZero
và sau đó thay đổi kích thước họ (dựa trên văn bản hoặc bất kỳ) sử dụng setBounds:
hoặc setFrame:
(vì ngay bây giờ bạn chỉ cần đi để thiết lập kích thước của xem) . Sau đó, thêm các chế độ xem này dưới dạng các bản xem trước của ô contentView
của ô. Sau đó, trong một lớp con tùy chỉnh của UITableViewCell
, bạn có thể thực hiện giải pháp của mình bằng cách ghi đè hành vi mặc định (không có gì) của layoutSubviews:
để đặt trường gốc của khung của chế độ xem phụ (nghĩa là CGRect) sẽ định vị các phần phụ trong xem nội dung của ô (kích thước đã được đặt). Bạn có thể cần gọi số setNeedsLayout:
hoặc layoutIfNeeded:
.
Đây thực sự là một phác thảo sơ bộ về cách có thể triển khai giải pháp vì có rất nhiều chi tiết bị bỏ sót. Ví dụ: nếu bạn thay đổi kích thước nút dựa trên văn bản của titleLabel
, có thể bạn sẽ muốn dán một số vào chiều rộng và chiều cao nếu không, nút sẽ có kích thước của nhãn và trông sẽ lạ. Trong phương pháp layoutSubviews:
, có thể có một số lượng hợp lý logic để bố trí nhãn và nút theo cách bạn muốn (ví dụ, nó sẽ đơn giản hơn nếu tất cả các bản xem trước của một ô có cùng loại như tất cả các nhãn). nếu các cuộc khảo sát có thể bao trùm đến một dòng mới.
Xin chào, bạn có thể muốn hỏi câu hỏi này như một câu hỏi mới, bởi vì đó không phải là câu trả lời hay cho câu hỏi của tôi. Tuy nhiên, bây giờ tôi đã tắt chủ đề đó và sẽ xem xét vấn đề này nếu tôi quay lại dự án đó ... –