7

Ho un UICollectionView creato da storyboard,visualizzazione UICollectionView 3 articoli per riga

voglio avere 3 elementi per riga nella visualizzazione. Sono riuscito a farlo utilizzando il seguente:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return CGSizeMake(collectionView.frame.size.width/3.6 , (collectionView.frame.size.height-100)/2); 
} 

Tuttavia, se ho 6 articoli, ho ottenuto 2 righe con 3 elementi ciascuno. Ma quando ho 4 elementi, visualizzerò 2 righe con 2 elementi ciascuna.

E 'possibile visualizzarli in 2 file, il primo con 3 elementi e il secondo contiene solo 1?

+0

Prova questo collegamento [http://stackoverflow.com/questions/14674986/uicollectionview-set-number-of-columns ] (http://stackoverflow.com/questions/14674986/uicollectionview-set-number-of-columns) –

+0

@PrashantTukadiya niente che potrei usare, mostra ancora 2 righe con 2 elementi ciascuna, e uno spazio vuoto sulla destra (che si adatta a una cella nella prima riga) –

+0

prova questo http://stackoverflow.com/questions/17229350/cell-spacing-in-uicollectionview –

risposta

-1

So che è così tardi, ma la soluzione che sono attualmente in uso e gestito questo caso è stato utilizzando KRLCollectionViewGridLayout come di seguito

 KRLCollectionViewGridLayout* aFlowLayout = [[KRLCollectionViewGridLayout alloc]init]; 
     aFlowLayout.aspectRatio = 1; 
     aFlowLayout.sectionInset = UIEdgeInsetsMake(2, 2, 2, 2); 
     aFlowLayout.interitemSpacing = 2; 
     aFlowLayout.lineSpacing = 2; 
     aFlowLayout.numberOfItemsPerLine = 3; 
     aFlowLayout.scrollDirection = UICollectionViewScrollDirectionVertical; 

     _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.heigh) collectionViewLayout:aFlowLayout]; 

È possibile trovare la libreria KRLCollectionViewGridLayout classe utilizzando questo link

8

qui l'ho fatto, ho implementato UICollectionViewDelegateFlowLayout su UICollectionView aggiungere il seguente metodo. funziona, usalo.

- (CGSize)collectionView:(UICollectionView *)collectionView 
        layout:(UICollectionViewLayout *)collectionViewLayout 
    sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    CGFloat screenWidth = screenRect.size.width; 
    float cellWidth = screenWidth/3.0; //Replace the divisor with the column count requirement. Make sure to have it in float. 
    CGSize size = CGSizeMake(cellWidth, cellWidth); 

    return size; 
} 

questo metodo di lavoro come larghezza dimensioni dello schermo diviso 3.

+0

prova ad avere solo 4 elementi, li visualizzerà come 2 righe e ogni riga con 2 celle, ho già provato it –

+0

qui, CGSize size = CGSizeMake (100,100) nel dare valore di deault e provarlo .. (se si può provare in iphone 6 o maggiore quindi dare condtion per la risoluzione e impostare la dimensione) –

+0

non è correlato al telefono, quando io avere 6 articoli è tutto perfetto, ma quando sono 4 articoli la collezione ordina che gli articoli abbiano lo stesso numero in ogni riga, non so se è normale o potrei cambiarlo in un modo –

2
(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    CGFloat screenWidth = screenRect.size.width; 
    float cellWidth = screenWidth/3.2; //Replace the divisor with the column count requirement. Make sure to have it in float. 
    CGFloat screenHeight = screenRect.size.height; 
    float cellHeight = screenHeight/3.0; 


    CGSize size = CGSizeMake(cellWidth, cellHeight); 


    return size; 
} 

Applicare il troppo- codice qui sotto (viewWillTransitionToSize)

(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { 
    [self.collectionView/*(that's my collection view name)*/ reloadData]; 
} 

presente Codice aiuterà a ottenere lo stesso no. di celle in verticale e anche in modalità orizzontale. Ho applicato il codice sopra per ottenere 3 celle in verticale e 3 celle in modalità orizzontale.

1

provare questo

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return CGSizeMake(self.view.frame.size.width/3 -10 , (collectionView.frame.size.height-100)/2); 
} 
0
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ 
    return CGSizeMake(self.collectionView.bounds.size.width/3, self.collectionView.bounds.size.width/3); 
} 

La cosa più importante è necessario fare anche nella dimensione ispettore di collectionView impostare la spaziatura minima per cella & linea a 0