8

UICollectionViewCells öğesinden biri UITextView içeriyor. Amacım UICollectionViewCell'i metin görünümünün içeriğine göre otomatik olarak düzeltmektir.UITextView içeren UICollectionViewCell öğesinin boyutlandırılması contentSize'e uydurmak için

Koleksiyonu geçersiz kıldımView: sizeForItemAtIndexPath, ancak sonsuz döngü oluşturmadan metin görünümü için içerik yükseklik değerine ulaşmaya çalışıyorum.

CGRect frame = textView.frame; 
frame.size.height = textView.contentSize.height; 
textView.frame = frame; 

Ama sizeForItemAtIndexPath içinde, ben UITextView için bir işaretçi gerekir yapmak için:

Genellikle aşağıdaki gibi bir şey yapacağını, bir UITextView otomatik olarak boyutlandırma. Bu işaretçiyi almak için kendimi cellForItemAtIndexPath öğesini çağıran buluyorum, ancak bu, sizeForItemAtIndexPath adını verdiğinden, sonsuz bir döngüdür.

Görünümün boyutunu önceden boyutlandırmanın ve UICollectionView'un buna saygı göstermesinin bir yolunu kaçırdığımdan şüpheleniyorum, ancak UICollectionViewFlowLayout öğesinin tanımladığı 50x50 değerine varsayılan olarak görünüyor. Yapacak nefret olduğum

Diğer (kesmek) fikirler:

  • İçine içeriği yüklemek ve yükseklik olduğunu alabilirsiniz başka gizli UITextView var.
  • İçerik yüksekliğini kendi başıma hesaplamak için eşdeğer mantığı uygulayın.

Teşekkürler!

cevap

4

Ayrıca metin görünümün temsilci olmak toplama görünümün temsilci ayarlayabilirsiniz ve textViewDidChange: güncellemesinde bir özellik textView.textContainer ve textView.textContainerInset hesaplanan bir yukarı güncel yüksekliği tutan. Daha sonra bu özelliği sadece sizeForItemAtIndexPath: numaralı telefondan referans alabilirsiniz. Bu durumda, hücrenin yeniden yüklenmesi ve muhtemelen söz konusu mülkün değerinin ne zaman değişeceği her defasında mizanpajı geçersiz kılmak istersiniz.

İlgili konular