ในการเปลี่ยนความสูงของเซลล์ tableView ใน iOS แบบไดนามิก เช่น การปรับขนาดเซลล์ตามเนื้อหาที่มี เราจำเป็นต้องใช้คุณสมบัติมิติอัตโนมัติ เราจะเห็นสิ่งนี้ด้วยความช่วยเหลือของโครงการตัวอย่าง
สร้างโปรเจ็กต์เปล่าและไปที่คลาส viewController สอดคล้องกับ UITableViewDataSource และ UITableViewDelegate
ในโค้ดด้านล่าง เราจะสร้างตารางก่อน จากนั้นจึงลงทะเบียนเซลล์สำหรับตารางนั้น และเพิ่มคุณสมบัติของตาราง
เราจะตั้งค่าผู้รับมอบสิทธิ์มุมมองตารางและแหล่งข้อมูลมุมมองตาราง
สุดท้ายเราจะเพิ่มมุมมองตารางเพื่อดู จากนั้นเราจะเรียกฟังก์ชันนี้ภายในเมธอด viewDidLoad ของตัวควบคุมการดู
หมายเหตุ: เราได้ตั้งค่าคุณสมบัติที่เรียกว่าประมาณ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)
} ตอนนี้ โค้ดนี้จะเพิ่มตารางในมุมมองของเรา เรายังต้องบอกตารางว่าเราต้องการส่วนและแถวจำนวนเท่าใดในโค้ดของเรา
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
} รหัสนี้จะสร้างข้อความบรรทัดใหญ่ในแถวที่สองในมุมมองตารางของเรา เพื่อให้ได้ความสูงตามขนาดเนื้อหา
หมายเหตุ: UITableViewCell มีคุณสมบัติป้ายชื่อโดยค่าเริ่มต้น และป้ายชื่อมีความยาว 1 บรรทัดตามค่าเริ่มต้น ดังนั้นเราจึงจำเป็นต้องเปลี่ยนสิ่งนั้นเพื่อดูการทำงานของมิติอัตโนมัติ
ตอนนี้เราต้องบอกตารางว่าเซลล์ควรมีความสูงเท่าใด
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
เมื่อเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้
