2016-12-19 5 views
2

Ich habe eine collectionView mit verschiedenen collectionCell und ich möchte eine Skalierung/Höhe/Größe abhängig von der Zelle einstellen. Wie kann ich es tun ?So entwerfen Sie verschiedene Sammlungszelle

Hier ist das Bild meiner anderen Zelle: a title cell und 2 verschiedene cell image. Einer ist Breite der Ansicht/3 und der andere ist/2. Ich kann es nicht mit Auto-Layout-Einschränkung im Storyboard tun, also muss ich im Code tun. Ich versuche, das CollectionViewLayout zu verwenden.

CollectionView

+0

wie viele collectionviewcell Sie in Ihrer Kollektion benötigen? –

+0

@HimanshuMoradiya Hallo, ich habe 6 verschiedene Zellen. Aber nur 3 verschiedene Design (Titel, Bild Maßstab Ansicht/3 und Bild Maßstab Ansicht/2. Wie das Storyboard Bild – Makaille

+0

dann setzen Bedingung in Collectionviewcelllayout Delagates Methode und geben Rahmen es –

Antwort

1

implementieren

class MyViewController: UIViewController, UICollectionViewDataSource , UICollectionViewDelegate , UICollectionViewFlowLayout

in ViewDidLoad

collectionView.delegate = self; 
collectionView.datasource = self; 

add Delegierter Strömungs Layout

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    if indexPath.row == 0 || indexPath.row == 1 || indexPath.row == 2{ 
     return CGSize(self.view.frame.size.width/3, 100) 
    } 

    else{ 
     return CGSize(self.view.frame.size.width/2, 100) 
    } 
// return the size you what 
    } 
0

Wie pro Ihre Anforderung können Sie wie auf diese Weise tun

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    if (indexPath.row >= 0 && indexPath.row < 3) { 
     return CGSize(width: self.view.frame.size.width/3.15, height: 150) 
     // here give size for 3 collectionviewcell in one row . i use 3.5 beacause of i put spacing 10 pix left and right side of collectionview. 
    } 
    else if (indexPath.row >=3 && indexPath.row < 5){ 
     return CGSize(width: self.view.frame.size.width/2.20, height: 150) 
     // here give size for 2 collectionviewcell in one row. 
    }else{ 
     return CGSize(width: self.view.frame.size.width/3.15, height: 150) 
    } 

} 

Ausgang:

as they requirement 6 cell in collectionview

+1

Sie sollten eine allgemeinere Lösung statt hart Codierung der Zahlen – Rikh

+0

@Rikh dann sagen Sie mir, was ist die allgemeine Lösung für diese Frage –

+0

Gute Arbeit zumindest versuchen Sie zu helfen –

Verwandte Themen