Je suis confronté à un problème où la grande barre de navigation par titre s'effondre très brusquement lors du défilement sur un UITableView intégré à l'intérieur d'un UIViewController. Le problème semble se produire uniquement lors du défilement vers le haut sur l'écran. Lorsque vous faites défiler l'écran vers le bas, le titre passe en douceur pour redevenir grand, mais pas l'inverse.
Ce problème ne se produit PAS si vous utilisez un UITableViewController.
Voici le comportement normal et attendu lors du défilement à l'intérieur d'un UITableViewController.
Et voici la transition brisée et abrupte lors de l'utilisation d'un UITableView à l'intérieur d'un UIViewController.
Voici le code de l'implémentation cassée:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 12
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Basic", for: indexPath)
cell.textLabel?.text = "Title \(indexPath.row)"
return cell
}
}
La barre de navigation a préfère les grands titres cochée et l'élément de navigation a grand titre réglé sur Automatique.
Le code et la configuration des deux exemples ci-dessus sont exactement les mêmes, sauf que celui-ci est un UITableViewController et un UITableView à l'intérieur d'un UIViewController.
J'ai également observé que le comportement cassé ne se produit PAS si le contenu de UITableView ne dépasse pas la hauteur de la vue. Mais une fois qu'il y a plus de cellules que ne peut en contenir l'écran, il se casse.
Une idée si je fais quelque chose de mal ou s'il s'agit d'un bug iOS 11?
J'ai rencontré le même problème - j'avais UIViewController
intégré dans UINavigationController
, le UIViewController
avait une vue de table avec des contraintes de début, de fin, de haut et de bas pour zone de sécurité . L'ensemble de la vue de la table s'est comporté de manière agitée. L'astuce consistait à changer la contrainte supérieure de tableview en superview .
Ici, j'ai enregistré la modification de la contrainte changement de contrainte de bogue iOS 11 de tableview
Mettez cette ligne de code sur votre UIViewController contenant UITableView et fonctionne très bien pour moi.
Swift
extendedLayoutIncludesOpaqueBars = true;
Objectif c
self.extendedLayoutIncludesOpaqueBars = YES;
Définissez l'espace supérieur UITableView AutoLayout sur "Superview" au lieu de "Safe Area"
Dans Interface Builder:
Ça a marché avec moi.
J'ai eu un problème similaire et je l'ai résolu en supprimant UINavigationBar.appearance().isTranslucent = false
de mon AppDelegate.
La réponse de Soolar est juste, mais je ne sais pas comment le réparer dans le storyboard. Enfin, j'ai résolu le problème de la solution de Roman dans une autre question, en ajoutant:
NSLayoutConstraint.activate([
scrollView.topAnchor.constraint(equalTo: view.topAnchor),
scrollView.leftAnchor.constraint(equalTo: view.leftAnchor),
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
scrollView.rightAnchor.constraint(equalTo: view.rightAnchor)
])
dans viewDidLoad
.
Réponse originale: https://stackoverflow.com/a/48321447/1386369