de Payal Gupta

Cum să dinamizați înălțimea vizualizărilor colecției în aplicațiile dvs. iOS

Fii dinamic, la fel ca viața …

Cum sa dinamizati vizualizarile colectiei de inaltime in aplicatiile dvs

Vizualizările de tabel și vizualizările colecției au fost întotdeauna o parte integrantă a dezvoltării aplicației iOS. S-ar putea să am întâlnit cu toții diverse probleme legate de acestea. În acest articol, vom discuta o astfel de afirmație de problemă legată de vizualizările colecției.

Declarație problemă

Să presupunem că avem un UICollectionView într-o UITableViewCell și în jur de 20 UICollectionViewCells pe care trebuie să le redăm vertical. Cu siguranță o putem implementa într-o clipită dintr-o clipită cu sursa de date dată.

Acum vine declarația reală a problemei – avem nevoie de UITableViewCell pentru a-și regla dinamic înălțimea în funcție de conținutul său. De asemenea UICollectionView trebuie să fie astfel încât toate celulele să fie afișate dintr-o singură dată, adică nu este permisă derularea.

Scurtă poveste lungă: face totul dinamic …

Cum sa dinamizati vizualizarile colectiei de inaltime in aplicatiile dvs
Vizualizare colecție fixă ​​și dinamică înălțime

Să începem codarea

O vizualizare în iOS își calculează înălțimea din conținutul său, dat fiind că nu există nicio constrângere de înălțime furnizată. Același lucru este valabil și pentru UITableViewCell.

Deocamdată, vom păstra un singur collectionView în interiorul nostru tableViewCell cu al ei; cu al lui leading, top, trailing and bottom constraints setat la 0.

Cum sa dinamizati vizualizarile colectiei de inaltime in aplicatiile dvs
Vizualizați ierarhia

Deoarece nu am furnizat nicio constrângere de înălțime pentru collectionView și nici noi nu cunoaștem contentSize în prealabil, atunci cum va fi tableViewCell calculați înălțimea sa?

Soluţie

Calcul dinamic collectionView’s înălțime conform propriei sale contentSize este pur și simplu un proces în 3 pași.

1. Subclasă UICollectionView și suprascrie-o layoutSubviews() și intrinsicContentSize , adică

Codul de mai sus va invalida fișierul intrinsicContentSize și va folosi actualul contentSize de collectionView. Codul de mai sus ia în considerare custom layout de asemenea.

2. Acum, fixează-te DynamicHeightCollectionView dupa cum collectionView’s clasa în storyboard.

1611456307 800 Cum sa dinamizati vizualizarile colectiei de inaltime in aplicatiile dvs

3. Un ultim lucru, pentru ca modificările să aibă efect: trebuie să apelați layoutIfNeeded() pe collectionView, după reîncărcare collectionView’s date, adică

func configure(with arr: [String]) {   self.arr = arr   self.collectionView.reloadData()   self.collectionView.layoutIfNeeded() //Here..!!!}

Și iată-l!

Exemplu de proiect

Puteți descărca exemplul de proiect de la aici.

Lecturi suplimentare

Nu uitați să citiți celelalte articole ale mele:

  1. Totul despre Codable în Swift 4
  2. Tot ce ai vrut mereu să știi despre notificări în iOS
  3. Copiere profundă vs. copie superficială – și cum le puteți folosi în Swift
  4. Codificare pentru iOS 11: Cum să glisați și să fixați în colecții și tabele
  5. Tot ce trebuie să știți despre Extensiile de azi (Widget) în iOS 10
  6. Selecția UICollectionViewCell simplificată .. !!

Nu ezitați să lăsați comentarii în cazul în care aveți întrebări.