Est-ce que les cellules du UITableView
spectacle sur l'espace vide lorsque vous faites défiler vers le bas?
Si tel est le cas, le problème peut provenir de l’encart ajouté au UITableView
contrôleur de navigation que vous avez dans votre vue. L'encart est ajouté à la vue de tableau afin que le contenu soit placé sous la barre de navigation lorsqu'aucun défilement n'a eu lieu. Lorsque le tableau fait défiler, le contenu défile et s'affiche sous une barre de navigation transparente. Ce comportement n'est bien entendu souhaité que si la vue tableau démarre directement sous la barre de navigation, ce qui n'est pas le cas ici.
Une autre chose à noter est qu'iOS ajuste l'encart de contenu uniquement pour la première vue dans la hiérarchie de vues si elle est UIScrollView
ou si elle est descendante (par exemple UITableView
et UICollectionView
). Si votre hiérarchie de vues comprend plusieurs vues de défilement, automaticallyAdjustsScrollViewInsets
apportera des ajustements uniquement au premier.
Voici comment modifier ce comportement:
a) Générateur d'interface
- Sélectionnez le contrôleur de vue
- Ouvrir l'inspecteur d'attributs
Il existe une propriété appelée «Ajuster les inserts de vue de défilement» dans l'inspecteur d'attributs d'IB (lorsqu'un contrôleur de vue est sélectionné) qui est activée par défaut. Décochez cette option:
(Image gracieuseté de Dheeraj D )
Je ne sais pas quelle version de Xcode a introduit cette option (je ne l'ai pas repérée dans les notes de publication), mais elle est au moins disponible dans la version 5.1.1.
Edit: Pour éviter toute confusion, c'était la troisième option mentionnée dans les commentaires
b) Par programme
Ajouter ceci à ie viewDidLoad
(crédits à la réponse de Slavco Petkovski et au commentaire de Cris R )
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
c) Cela pourrait être pertinent pour les anciens élèves
Vous pouvez soit résoudre ce problème en ajoutant
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
Ou si vous utilisez IB et si la barre de navigation n'est pas transparente (ne peut pas le dire sur la capture d'écran)
- Sélectionnez le contrôleur de vue
- Ouvrir l'inspecteur d'attributs
- Dans les options du contrôleur de vue, section Prolonger les bords, désélectionnez «Sous les barres supérieures»