1

J'essaie de faire de ma cellule de vue de collection pour couvrir la hauteur de l'écran sans passer sous la barre de navigation. J'ai la hauteur de la barre de navigation et je l'utilise pour faire la hauteur de la cellule. Le problème est que la cellule est toujours plus grande qu'elle ne devrait l'être et si je défile vers le bas, elle passera sous la barre de navigation. Je devais être exactement la hauteur de l'écran sans la barre de navigation. Exemple de code ci-dessous:Comment avoir une cellule dans une vue de collection avec la hauteur identique à l'écran moins le nav. bar?

override func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    let navBarHeight: CGFloat = (self.navigationController?.navigationBar.frame.height)! 
    let heightOfCell: CGFloat = view.frame.height - navBarHeight 
    return CGSize(width: view.frame.width, height: heightOfCell) 

} 
+0

Avez-vous une barre d'onglets en bas? – Starlord

+0

aucune barre d'onglets en bas –

+0

Si l'origine de la collection View est 0.0, vous devez la déplacer en bas de la barre de navigation. CollectionView.frame.origin.y = (hauteur de la barre de navigation). De cette façon, les cellules de la vue de collection commencent juste sous la barre de navigation. Ou définir uiedgeinset pour la vue de la collection où haut serait hauteur de la barre de navigation – Starlord

Répondre

0

essayer prochain morceau de code dans votre viewController:

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    collectionView.collectionViewLayout.invalidateLayout() 
} 
+0

cela ne fonctionne pas. Avec cette méthode rien ne s'affiche sur l'écran, pas la cellule ou toute autre chose. –