14

enter image description hereAnimasyon UICollectionView hücre boyutu değişikliği ve yeniden konumlandırmak çevreleyen hücreler

Hedef:

hücrenin yüksekliği ve yeniden konumlandırmak çevreleyen hücrelerin değişikliğini canlandırmak için.

Senaryo: bir koleksiyon görmek yük uzak görüntülerde

bazı hücreler. Başlangıçta, bu hücreler statik olarak boyutlandırılır ve bir etkinlik göstergesi gösterilir. Bir görüntü yüklendikten sonra, hücresine eklenir ve fotoğrafın sığması için hücrenin yüksekliği değiştirilir.

Notlar:

Ben animateWithDuration ile hücrenin çerçeve değişikliği animasyon ediyorum. Bu, daha iyi bir hücre boyutu dışında, aşağıdaki hücrelerin üst üste gelmesi dışında, iyi çalışır. Hedef hücreyi yeniden boyutlandırdıktan ve sizeForItemAtIndexPath tarafından döndürülen boyutun başarılı bir şekilde sıfırlanmasından sonra körü körüne collectionView.collectionViewLayout invalidateLayout numaralı telefonu aramayı denedim.

Herhangi bir öneriniz var mı? Teşekkür ederim!

Örnek Kod:

https://github.com/juzzin/ResizeUICollectionViewCell/blob/master/ResizeUICollectionViewCell/FLOViewController.m

enter image description here

cevap

12

Temel olarak collectionViewLayout üç adım

1.invalidate yapmanız gereken

2.perform toplu güncellemeleri:

+5

sizeForItemAtIndexpath yeni boyutu 3.Return

... //invalidate layout [collectionView performBatchUpdates:^{ // make your cell at indexPath return a new size } completion:^(BOOL finished) { }]; 
size Daniel ederiz. Hızlı ve özlü yanıtınızı takdir edin. Bazı örnek kodlar yayınladım ve animasyonlar tamamlandıktan sonra performBatchUpdates'in invalidateLayout çağırdığını öğrendim. Açıkça performBatchUpdates'den önce çağrılırsa, hücre öznitelikleri hemen güncellendiğinden animasyonlar atlanır. Yani, ilk adımı atlayabileceğine inanıyorum. – Justin

+0

Biliyorum, söylemem gerekmiyor ama ben DAYS için bununla uğraşıyorum ve çözüm çok basit! TEŞEKKÜRLER!! Github bağlantısı için çok teşekkürler @Justin, çok yararlı. – Skoua

İlgili konular