Otomatik düzen, Custom UITableViewCell'de yok sayılır


93

Hücrenin yüksekliğini hesaplaması için gereken dikey olanlar da dahil olmak üzere tüm öğelerde kısıtlamalara sahip olmasına rağmen, otomatik düzen göz ardı edilmiş gibi görünüyor: tüm hücreler sıkıştırılmış.

İşte film şeridindeki sonucun ve kısıtlamaların bir ekran görüntüsü. görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin

TableView'i tutan VC'de, viewDidLoad'daki kod şu şekildedir:

tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension

İkinci satırın yorumlanması 120.0 yüksekliğindeki hücreleri verir, ancak Otomatik Düzen de göz ardı edilir.

Teşekkürler


Güncelleme

Arayüzü basitleştirmek için, kısıtlamalar olarak tek bir etiket bıraktım:

  • Gözetim için önde gelen alan
  • Gözetim için en üst alan
  • Sabit genişlik ve yükseklik (100 ve 100)
  • Hücrenin yüksekliğini belirlemeye yönelik tüm dikey kısıtlamalara sahip olduğundan emin olmak için alt boşluktan kapsayıcı kenar boşluğuna

Ve bu basitleştirilmiş arayüzle, otomatik düzen hala hesaba katılmıyor, bu da sorunun kötü ayarlanmış kısıtlamalardan kaynaklanmadığını gösteriyor.

Boyut Denetçisinde satır yüksekliği 120 olarak ayarlanır ve Özel işaretlenir. Hücre doğru özel sınıfa sahip, hücre yeniden kullanım tanımlayıcısı doğru.


Güncelleme: çözüm bulundu

Bu basit bir hataydı, aşağıdaki cevabıma bakın.


Hata ayıklama terminalinizi kontrol edin - burada herhangi bir şeyin beklendiği gibi çalışmadığını gösteren NSLayoutConstraint günlükleri var mı?
Matthew Hallatt

@MatthewHallatt hata ayıklama terminalinde hiçbir şey görünmüyor, teşekkür ederim.
Kqtr

@Kqtr bu iki satırı yorumlamayı deneyin ve ardından herhangi bir değişiklik olup olmadığını kontrol etmek için normal olarak bir kez çalıştırın.
Tushar Sharma

@TusharSharma İki satırı yorumlamak, yalnızca rowHeight satırını yorumlamakla aynı etkiye sahiptir: Hücrenin yüksekliği 120.0'dır, ancak otomatik düzen çalışmaz.
Kqtr

1
Arayüz oluşturucu herhangi bir kısıtlamayı eksik veya belirsiz olarak gösteriyor mu? Küçük sarı veya kırmızı ünlem işaretini kontrol edin.
Matthew Hallatt

Yanıtlar:


250

IB'deki özel hücre sınıfı hem prototip hücre hem de hücrenin UIV görünümüne verildiği için otomatik düzen göz ardı edildi.

UIView'ı UIView sınıfına geri döndürmek sorunu çözdü.

sadece çok açık olmak için


2
Bu soruna saatlerce sıkışıp kaldım ve bu çözdü, teşekkürler!
candidev

Buraya gelene kadar neredeyse bütün günümü boşa harcadım .... Sayende bin teşekkürler.
Renascent

-3

Sanırım sorun şu:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: 
IndexPath) -> CGFloat {

 return x
}

Tablo görünümünün hücreler için otomatik yüksekliğini hesaplaması için bu işlevi kaldırmanız gerekir.


Teşekkürler, maalesef onu geçersiz kılmıyorum: Aslında bu tableView için bir temsilcim bile yok, sadece bir veri kaynağı.
Kqtr

Metin görünümü kısıtlamalarını hücrenin tüm kenarlarına ayarladınız mı? Ve textView'ın kaydırmasını devre dışı mı bıraktınız?
Jaafar Barek

Çok satırlı etiket (0 satır), 1) numarayla solunda dikey aralık 2) denetlemek için üst boşluk 3) denetleme için son boşluk ve 4) Soran etiketiyle alt boşluk için kısıtlamalara sahiptir.
Kqtr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.