Tôi muốn có một hành vi tương tự hơn thẻ HTML <Table>
, theo nghĩa khung được định kích thước theo nội dung của nó.Cách kích thước UIStackView tùy thuộc vào nội dung của nó?
Trong hoàn cảnh của tôi, tôi sử dụng UIStackView làm chế độ xem nội dung của UITableViewCell. Vì các mục trong ô là thông tin khác nhau nên chiều cao kết quả của ô sẽ thay đổi.
chiến lược của tôi là để lập trình xây dựng một tế bào như một UIStackView với một trục .Vertical, như trong đoạn mã như sau:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
let sv = UIStackView(frame: tableview.frame)
sv.axis = .Vertical
cell.addSubview(sv)
for i in information {
let l = UILabel()
l.text = i
sv.addSubViewAndArrange(l)
}
return cell
}
Thật không may, kích thước tế bào không điều chỉnh nội dung, và như kết quả là tôi phải tự thiết lập chiều cao của ô, như sau:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return cellHeight // a constant
}
Làm cách nào để khắc phục điều đó?
Tôi nghĩ bạn đúng cách nên hạn chế stackView của bạn với các tế bào cho phương pháp này để làm việc. – zcui93
Tôi đã thử nghiệm đường dẫn này (thêm sv T-T, L-L, R-R, B-B ràng buộc vào tế bào), nhưng kết quả này trong tế bào cực rộng (bạn chỉ nhìn thấy một tế bào tại một thời điểm). @ zcui93 –
StackView trên riêng của nó nên được hạn chế với tế bào, do đó, tế bào sẽ phát triển với nó. Sau đó, thiết lập các bản xem trước để StackView phát triển đúng dựa trên "Kích thước nội dung nội tại" của chúng – zcui93