2017-02-06 1 views
0

J'ai un UICollectionView que je crée et ajouter programatically mais pour une raison quelconque à l'exécution des sections 1 et 2 se chevauchent, ils commencent tous les deux au même endroit:UICollectionView cellules qui se chevauchent

Voici ma mise en œuvre (le code est rapide 2.3 puisque c'est une exigence de projet):

override func viewDidLoad() { 
    super.viewDidLoad() 
    view.backgroundColor = lightGreyColor 
    layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 15, right: 0) 
    layout.minimumInteritemSpacing = 0.5 
    layout.minimumLineSpacing = 0.5 
    layout.scrollDirection = UICollectionViewScrollDirection.Vertical 
    // layout.headerReferenceSize = CGSize(width: view.bounds.width, height: 30) 

    let collectionViewFrame = CGRect(x: 0, y: 0, width: view.bounds.width, height: viewHeight) 
    collectionView = UICollectionView(frame: collectionViewFrame, collectionViewLayout: layout) 

    collectionView.allowsSelection = true 
    collectionView.bounces = true 
    collectionView.scrollEnabled = true 
    collectionView.hidden = false 
    collectionView.pagingEnabled = false 
    collectionView.backgroundColor = lightGreyColor 
    collectionView.showsVerticalScrollIndicator = false 
    collectionView.showsHorizontalScrollIndicator = false 

    collectionView.delegate = self 
    collectionView.dataSource = self 

    view.addSubview(collectionView) 

    collectionView.registerNib(UINib(nibName: "SmallDiscoverItemCollectionViewCell", bundle: NSBundle.mainBundle()), forCellWithReuseIdentifier: "SmallDiscoverItemCollectionViewCell") 

    collectionView.registerClass(NewDiscoverTopCollectionViewCell.self, forCellWithReuseIdentifier: "NewDiscoverTopCollectionViewCell") 
    collectionView.registerClass(TopHeaderCell.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "TopHeaderCell") 

    greedoCollectionViewLayout = nil 
    greedoCollectionViewLayout1().rowMaximumHeight = collectionView.bounds.width/1.8 
    greedoCollectionViewLayout1().fixedHeight = false 

} 


func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

    switch indexPath.section { 
    case 0: 
     return CGSize(width: collectionView.bounds.width, height: 200) 
    case 1: 
     return CGSize(width: collectionView.bounds.width, height: 200) 
    default: 
     return self.greedoCollectionViewLayout1().sizeForPhotoAtIndexPath(indexPath) 
     } 

    } 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
switch (indexPath.section) { 
    case 0: let cell = collectionView.dequeueReusableCellWithReuseIdentifier("NewDiscoverTopCollectionViewCell", forIndexPath: indexPath) as! NewDiscoverTopCollectionViewCell 

     return cell 

    case 1: let cell = collectionView.dequeueReusableCellWithReuseIdentifier("NewDiscoverTopCollectionViewCell", forIndexPath: indexPath) as! NewDiscoverTopCollectionViewCell 

     return cell 

    case 2: let cell = collectionView.dequeueReusableCellWithReuseIdentifier("SmallDiscoverItemCollectionViewCell", forIndexPath: indexPath) as! SmallDiscoverItemCollectionViewCell 
    let item = usersItems[indexPath.item] 
    return cell 
} 

Ceci est le résultat final du chevauchement: Section 0 et 1 et ayant fond vert tout entre il y a cet écart. Bien que l'article 2 a beaucoup d'images:

enter image description here

+0

Vous devez envoyer une capture d'écran de la question, pour nous de mieux comprendre ce qui se passe –

+0

là-dessus maintenant ... mettrons à jour le poste dans quelques – John

+0

Et qu'est-ce qui se chevauche exactement? –

Répondre

0

Pour une raison bizarre, le UICollectionViewCell s'initialisez à une position y égale à sa taille. Pour résoudre ce problème, je viens d'ajouter ceci dans le UICollectionViewCell

override init(frame: CGRect) { 
let noProblemFrame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height) 
super.init(frame: noProblemFrame)