Để thay đổi chiều cao của ô tableView trong ios một cách động, tức là thay đổi kích thước ô theo nội dung có sẵn, chúng tôi sẽ cần sử dụng thuộc tính kích thước tự động. Chúng tôi sẽ thấy điều này với sự trợ giúp của một dự án mẫu.
Tạo một dự án trống và chuyển đến lớp viewController của nó, phù hợp với UITableViewDataSource và UITableViewDelegate.
Bây giờ, trong đoạn mã dưới đây, trước tiên chúng ta sẽ tạo một bảng, sau đó đăng ký một ô cho bảng đó và thêm một số thuộc tính bảng.
Chúng tôi sẽ đặt người đại diện cho chế độ xem bảng và nguồn dữ liệu chế độ xem bảng.
Cuối cùng, chúng tôi sẽ thêm chế độ xem bảng để xem. Sau đó, chúng tôi sẽ gọi hàm này bên trong phương thức viewDidLoad của bộ điều khiển chế độ xem của chúng tôi.
Lưu ý: Chúng tôi đã đặt một thuộc tính được gọi là ước tính RowHeight
func initTableView() { let tableView = UITableView() tableView.frame = self.view.frame tableView.dataSource = self tableView.delegate = self tableView.backgroundColor = colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1) tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") tableView.estimatedRowHeight = UITableView.automaticDimension self.view.addSubview(tableView) }
Bây giờ, mã này sẽ thêm một bảng vào chế độ xem của chúng ta, chúng ta cũng cần cho bảng biết chúng ta muốn có bao nhiêu phần và hàng trong mã của mình.
func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 }
Mã này sẽ tạo một số dòng văn bản lớn ở hàng thứ hai trong chế độ xem bảng của chúng tôi để nó có chiều cao theo kích thước nội dung.
Lưu ý: UITableViewCell có thuộc tính nhãn theo mặc định và nhãn có độ dài 1 dòng theo mặc định, vì vậy chúng tôi cần thay đổi điều đó để xem thứ nguyên tự động hoạt động.
Bây giờ chúng ta cần cho bảng biết ô của nó phải có chiều cao là bao nhiêu.
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableView.automaticDimension }
Khi chúng tôi chạy đoạn mã trên, chúng tôi nhận được kết quả sau.