Meskipun telah menetapkan batasan untuk semua elemen, termasuk yang vertikal yang diperlukan sel untuk menghitung tingginya, tata letak otomatis tampaknya diabaikan: semua sel diperas.
Berikut tangkapan layar dari hasil dan batasan di papan cerita.
Di VC yang menyimpan tableView, berikut kode di viewDidLoad:
tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension
Mengomentari baris kedua memberikan sel dengan tinggi 120.0 tetapi Autolayout juga diabaikan.
Terima kasih
Memperbarui
Untuk menyederhanakan antarmuka, saya meninggalkan satu label dengan, sebagai batasan:
- Ruang utama untuk superview
- Ruang atas untuk melihat super
- Lebar dan tinggi tetap (100 & 100)
- Ruang bawah ke margin penampung untuk memastikan bahwa sel memiliki semua batasan vertikal untuk menentukan tingginya
Dan dengan antarmuka yang disederhanakan ini, tata letak otomatis masih belum diperhitungkan, yang mengisyaratkan kepada saya bahwa masalahnya tidak berasal dari batasan yang ditetapkan dengan buruk.
Di Size Inspector, tinggi baris disetel ke 120 dan Kustom dicentang. Sel memiliki kelas kustom yang tepat, pengenal penggunaan ulang sel sudah benar.
Pembaruan: solusi ditemukan
Ini adalah kesalahan sederhana, lihat jawaban saya di bawah.
sumber
Jawaban:
Tata letak otomatis diabaikan karena baik sel prototipe DAN UIView sel telah diberi kelas sel khusus di IB.
Mengatur UIView kembali ke kelas UIView memecahkan masalah.
sumber
Saya pikir masalahnya adalah Anda menerapkan:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return x }
Anda perlu menghapus fungsi ini secara inorder untuk tableview guna menghitung tinggi otomatisnya untuk sel.
sumber