2015-07-20 14 views
16

Ci sono una serie di domande di overflow dello stack sull'auto-layout delle celle UITableView e sezioni/piè di pagina che riguardano i vincoli UIView-Encapsulated-Layout-Width che lo UITableView utilizza per rendere i suoi componenti come corretta dimensione:UIView-Encapsulated-Layout-Width/Height Constrained to Zero

Lo scopo di questi vincoli sembra abbastanza chiaro - permettono la UITableView e anche UICollectionView di interfacciarsi con il layout vincolo e passare le sue specifiche su come grandi cellule (e altri componenti) dovrebbe essere.

maggior parte dei problemi sembrano essere che le persone hanno una serie di richieste vincoli che sono incompatibili con questi vincoli di incapsulamento che richiede anche una dimensione di 0. Le risposte più praticabili sembrano essere quella di ridurre la priorità dei vincoli definiti dall'utente a 999 in modo che i framework possano sovrascriverli.

Tuttavia - quello che mi interessa capire è il motivo per cui è UITableView che richiedono una larghezza di 0 per uno dei suoi punti di vista? Si tratta di un bug? O è un risultato di un uso errato? O ha perfettamente senso?

I limiti di altezza di 0 a volte hanno senso, se le celle vengono espanse dal nulla. Abbassare le priorità è un buon modo per gestirle. Ma perché le celle dovrebbero avere una larghezza di 0?

+1

hai mai trovato una soluzione per questo? – swalkner

+0

No, non l'ho fatto, mi dispiace. – Benjohn

risposta

0

UIView non ha le dimensioni intrinseche, quindi i vincoli di larghezza e altezza necessari. UIView-Encapsulated-Layout-Width e Uiguriew-Encapsulated-Layout-Height vengono creati inizialmente da UICollectionView/UITableView. In seguito imposta la costante di vincolo in base al metodo delegato sizeForItem o heightForRowAtIndexPath. Per garantire che UICollectionViewCell/UITableViewCell creato nel metodo cellForItem/cellForRow abbia la dimensione esatta.

+0

Quindi penso che abbia perfettamente senso. :) –