2013-01-07 8 views
6

Ho creato un esempio molto semplice di un'app (codice sorgente su github) utilizzando un UICollectionView.Perché AutoLayout non si occupa del mio UICollectionView

Tutto funziona correttamente, purché l'app sia in modalità verticale. Tuttavia, quando viene modificato in modalità orizzontale, la cella del contenuto non viene ridimensionata in modo appropriato e, quindi, non viene visualizzato nulla.

Ho pensato che tutti i vincoli di AutoLayout necessari sono a posto. Sono consapevole di poter implementare collectionView:layout:sizeForItemAtIndexPath:, ma il mio obiettivo è utilizzare il più possibile AutoLayout (semplicemente per comprendere meglio AutoLayout).

Cosa mi manca qui?

risposta

9

È possibile utilizzare l'intervallo automatico per impostare la posizione e le dimensioni della vista raccolta. Ed è possibile utilizzare l'autolayout per impostare la posizione e la dimensione delle visualizzazioni secondarie all'interno di ciascuna cella. Ma non è possibile utilizzare l'autolayout per controllare la posizione e la dimensione delle celle. È necessario utilizzare l'oggetto di layout della vista dell'insieme per impostare la posizione e la dimensione di ciascuna cella della vista dell'insieme. Se si desidera che le celle cambino dimensione quando cambia l'orientamento dell'interfaccia, è necessario aggiornare l'oggetto di layout per segnalare la nuova dimensione e invalidare il layout.

+2

A partire da iOS 8 è possibile rendere le dimensioni delle celle stesse. Il layout creerà un'istanza della cella quando appropriato e puoi utilizzare i vincoli di autolayout o sovrascrivere sizeThatFits :. Il layout deve avere il suo insieme di proprietà stimato dell'ItemSize. – fatuhoku

Problemi correlati