Punya masalah di sini yang membuatku gila.

Dalam storyboard saya memiliki tampilan tabel dalam tata letak dan saya mencoba untuk menyematkan batasan utama, atas, belakang, dan bawah dari UIView ke tampilan konten sel prototipe. Cukup lugas.

Setiap kali saya melakukan ini, saya mendapatkan kesalahan tata letak ini untuk UIView di Xcode:

"Memerlukan batasan untuk: posisi X, lebar"

"Memerlukan batasan untuk : Posisi Y, tinggi"

Problematic UIView

View hierarchy

Batasan pada tampilan itu (Superview adalah contentView):

UIView constraints

Di storyboard saya memiliki set berikut pada tampilan tabel:

  • Tinggi Baris: otomatis
  • Perkiraan (tinggi baris): 50

Table view settings

Dan pada sel tampilan tabel:

  • Tinggi Baris: 50

Table view cell settings

Saya telah melihat beberapa posting SO dan penelusuran lain yang menyatakan bahwa menyematkan tepi adalah apa yang harus dilakukan, dan seperti yang saya pahami Tata Letak Otomatis, saya telah memberikan batasan dan info yang diperlukan.

Bagaimana saya bisa memperbaiki ini?

(BTW: Saya menjalankan Xcode 11.3.1.)


Pembaruan: Sel-sel tampilan tabel ini akan diperbaiki ketinggiannya. Saya mencari sel untuk memberikan ketinggian untuk kontennya.

0
adamjansch 16 Januari 2020, 18:18

2 jawaban

Jawaban Terbaik

Ternyata saya memiliki tampilan tabel dan batasan sel dan pengaturan yang dikonfigurasi dengan benar; masalahnya lebih jauh ke hierarki tampilan.

Tampilan tabel ditempatkan dalam tampilan tumpukan vertikal, dan properti Alignment tampilan tumpukan itu disetel ke center (untuk kepentingan tampilan lain di tumpukan). Hal ini menyebabkan masalah Tata Letak Otomatis dalam menghitung lebar tampilan tabel.

Solusinya di sini adalah menambahkan batasan Equal Widths dari tampilan tabel ke tampilan tumpukan. Et voila! Kesalahan pada UIView dalam tampilan konten sel tampilan tabel menghilang.

Fixer constraint

0
adamjansch 16 Januari 2020, 20:53

UIView dengan sendirinya tidak memiliki intrinsicSize - jadi Anda memberi tahu contentView sel untuk menyematkan ke bingkai 0 x 0.

Jika Anda akan menambahkan konten ke UIView, atur batasan pada konten untuk mengontrol ukuran tampilan dan kesalahan akan hilang.

Sementara itu, berikan batasan ketinggian tampilan dan itu akan menyelesaikan masalah.


Sunting

Untuk sel dengan tinggi tetap... coba mulai dari awal.

  • Tambahkan tampilan tabel - berikan batasan yang diinginkan
  • Tambahkan prototipe sel tampilan tabel
  • Tambahkan UIView ke sel itu (beri warna latar belakang agar mudah dilihat)
  • Membatasi tampilan di Nol di keempat sisi (membatasi margin)
  • Atur Tinggi Baris sel menjadi 50 (hapus centang Otomatis)

Berikut tampilannya untuk saya:

enter image description here

enter image description here

enter image description here

2
DonMag 16 Januari 2020, 16:27