ในการเปลี่ยนความสูงของเซลล์ 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 }
เมื่อเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้