Les cellules de la UITableView
s'affichent dans l'espace vide lorsque vous faites défiler le texte vers le bas ?
Si c'est le cas, le problème pourrait venir de l'encart qui est ajouté à l'image. UITableView
à cause du contrôleur de navigation que vous avez dans votre vue. L'encart est ajouté à la vue tableau afin que le contenu soit placé sous la barre de navigation lorsqu'il n'y a pas de défilement. Lorsque le tableau défile, le contenu défile et s'affiche sous une barre de navigation transparente. Ce comportement n'est bien sûr souhaitable que si la vue du tableau commence directement sous la barre de navigation, ce qui n'est pas le cas ici.
Il convient également de noter qu'iOS n'ajuste l'encart de contenu que pour la première vue dans la hiérarchie des vues si elle est UIScrollView
ou son descendant (par ex. UITableView
y UICollectionView
). Si votre hiérarchie de vues comprend plusieurs vues de défilement, automaticallyAdjustsScrollViewInsets
n'apportera des ajustements qu'au premier.
Voici comment changer ce comportement :
a) Constructeur d'interface
- Sélectionner le contrôleur de vue
- Ouvrir l'inspecteur des attributs
-
Il existe une propriété appelée "Adjust scroll view insets" 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 reproduite avec l'aimable autorisation de <a href="https://stackoverflow.com/users/5785145/dheeraj-d">Dheeraj D </a>)
Je ne suis pas sûr de la version de Xcode qui a introduit cette option (je ne l'ai pas vu dans les notes de version), mais elle est au moins disponible dans la version 5.1.1.
Edit : Pour éviter toute confusion, il s'agit de la troisième option mentionnée dans les commentaires.
b) Par programme
Ajouter ceci à i.e. viewDidLoad
(crédits à Slavco Petkovski La réponse de la Commission et la réponse de l Cris R (commentaire de l'auteur)
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
c) Ceci pourrait intéresser les anciens élèves
Vous pouvez remédier à ce problème en ajoutant
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
Ou si vous utilisez IB et que la barre de navigation n'est pas transparente (je ne peux pas le dire à partir de la capture d'écran).
- Sélectionner le contrôleur de vue
- Ouvrir l'inspecteur des attributs
- Dans les options du contrôleur de vue, dans la section "Extend Edges", désélectionnez "Under Top Bars" (sous les barres supérieures).