Tôi đang gặp sự cố với ô tự động định kích thước bằng Bố cục tự động. Mục tiêu của tôi là để đạt được một bảng mà sẽ giống như thế này:IOS - các ô tự định kích thước
| Title_label (time) $price |
| |
|Some long description. More |
|description. |
| |
Khi tiêu đề là lâu nó sẽ giống như thế này:
| This title is (time) $price |
| really long |
| |
|Some long description. More |
|description. |
| |
Vì vậy, khi danh hiệu được lớn hơn nó đẩy nhãn thời gian tới miễn là có 8 điểm không gian beetwen thời gian và giá cả. Nếu nó thậm chí còn lớn hơn, nó nên được quấn vào hàng kế tiếp.
Tôi đã thực hiện trước chế độ xem bảng với các ô tự định kích thước nhưng ở đó chỉ có một nhãn mở rộng, không phải hai.
tôi đã thực hiện chiều cao tự động hàng của:
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 100
Đây là cách khó khăn của tôi trông giống như:
| 8px
|8px title 8px time >=8px price|
| 8px |
|8px description 8px|
| 8px |
Ngoài ra còn có sự liên kết đầu giữa thời gian giá và tiêu đề.
Tôi đã đặt số dòng tiêu đề và mô tả thành 0. Tôi đã đặt khả năng nén thời gian và giá thành 1000 (vì tiêu đề chồng chéo chúng).
Tuy nhiên nhãn tiêu đề không được bao bọc cho dòng tiếp theo. Nó kết thúc bằng .... Nhãn mô tả nhiều hơn cũng quá nhỏ. Khi tôi di chuyển chiều cao của bảng desription là cố định.
Tôi đã thử thêm cell.layoutIfNeeded() trước khi trả lại ô. Sau đó, bố trí di động bị rối tung lên (tiêu đề bị cắt bớt) nhưng khi tôi cuộn mọi thứ đều OK.
Bất kỳ ý tưởng nào?
Chỉnh sửa: Điều này có phải vì nhãn tiêu đề nằm cạnh các nhãn khác và không biết khi nào nên dán?
tôi đã cố gắng
override func layoutSubviews() {
self.nameLabel.preferredMaxLayoutWidth -= (durationLabel.frame.width + priceLabel.frame.width + 16)
super.layoutSubviews()
}
nói với nhãn tiêu đề chiều rộng tối đa của nó là gì nhưng nó messes mọi thứ lên.
Cảm ơn câu trả lời, tiếc là nó không hoạt động cho tôi (không có layoutIfNeeded()). Sau khi thêm layoutIfNeeded() tiêu đề nhãn kết thúc tốt đẹp nhưng tôi nhận được rất nhiều lỗi NSConstraints. Và mô tả vẫn bị cắt ngắn. – Cahir09
Tôi đã tạo dự án thử nghiệm mới và đặt tất cả các ràng buộc, nén và tính năng ôm như bạn đã đề xuất. Nhưng tiêu đề vẫn bị cắt ngắn. Nếu tôi thêm layoutIfNeeded trước khi trở về tế bào có vẻ tốt nhưng có một loạt các lỗi ràng buộc bố trí. Tin tốt là toàn bộ mô tả được hiển thị. Trong dữ liệu dự án của tôi được tải từ WS và có một chút phức tạp để điền vào ô với dữ liệu thích hợp. Nó có thể là lý do tại sao mô tả được cắt bỏ? Tôi có nghĩa là tế bào không thể tính toán chiều cao của nó trước khi nó được hiển thị? Nếu bạn vẫn có dự án mẫu của mình, bạn có thể tải lên và chia sẻ liên kết không? – Cahir09
Tôi chỉ thử nó trên IB, nhưng nó hoạt động. Tôi sẽ thiết lập một dự án khi tôi có thời gian rảnh rỗi. – Daniel