31

Attualmente ho una vista raccolta che occupa gran parte del mio schermo con le dimensioni dello schermo da 3,5 pollici. La vista raccolta è 51 pixel dall'alto e 20 pixel dalla parte inferiore dello schermo. Sto usando le celle con UIPageControl per creare un layout a pagine, con una cella per pagina. Quando si passa alla dimensione da 4 pollici, usando i vincoli posso ottenere la vista della collezione per espandersi nel nuovo spazio (mantenendo i 51 pixel dalla parte superiore e 20 dalla parte inferiore), ma la dimensione della cella rimane la stessa, quindi ora c'è un mucchio di spazio vuoto nella parte superiore e inferiore della cella. Ho provato a utilizzare i vincoli, ma sembra che non puoi impostarli per le celle. Come faccio ad espandere la dimensione della cella più grande per riempire lo spazio vuoto su iPhone 5?Visualizzazione UICollection Regola dimensione cella per Dimensione schermo

Il codice della vista collezione è solo

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
       cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 
return cell; 

} 

Il layout è messa a punto in IB voglio ottenere il layout di lavoro prima di aggiungo altro

iPhone 5 view. I want to fill the empty space

iPhone 4 view

+1

può plz mettere frammento di codice che avete utilizzato? – Swapnil

+1

@iSwap non è molto semplice Ho appena creato una vista di raccolta di base, con la configurazione del layout nel generatore di interfacce. La vista della collezione funziona bene, ho solo bisogno di capire come rendere la cella occupare lo spazio vuoto sull'iPhone 5 – benjih555

risposta

71

È è possibile utilizzare la proprietà metodo itemSize per impostare UICollectionViewCell, oppure utilizzare il metodo delegate, collectionView:layout:sizeForItemAtIndexPath: se è necessario impostare in modo dinamico le dimensioni di UICollectionViewCells.

+2

@rdelmar Quali sono i pro e i contro dei due metodi che hai dichiarato? – Sanne

+7

@Sanne, itemSize imposta la dimensione predefinita per le celle e va bene se si desidera che tutte le celle abbiano la stessa dimensione. Utilizzare il metodo delegate se è necessario restituire dimensioni diverse per gli articoli in determinati percorsi dell'indice. – rdelmar

7
CollectionView layout Delegate that will help you to resize your Cell as you need. 
- (CGSize)collectionView:(UICollectionView *)collectionView 
          layout:(UICollectionViewLayout*)collectionViewLayout 
      sizeForItemAtIndexPath:(NSIndexPath *)indexPath; 
+2

non sarebbe male per dire qual è l'accordo con il tuo codice! –

+6

Il poster ha chiesto: * "Come faccio ad espandere la dimensione della cella più grande per riempire lo spazio vuoto" *. Non ha * chiesto * un nome di funzione. Se si intende fornire un nome funzione su una riga senza spiegare come utilizzarlo, è consigliabile aggiungerlo come commento alla domanda originale. – jww

+4

questo è un semplice delegato, che altro è necessario spiegare? e Domanda: Vista UICollection Regola la dimensione della cella per la dimensione dello schermo. quindi penso che questa risposta abbia abbastanza chiarimenti?亚历山大 mi dici come lo spiegherei di più? –