Comment vertical align (centre) le contenu de la UITableView?
Je veux centrer le contenu de mon UITableView
qui contient headerView
et footerView
créé au storyboard, et UITableViewCell
s. Comment puis-je y parvenir?
Voici ce que je suis en train de mettre en œuvre pour résoudre mon problème, mais cela ne fonctionne pas.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
CGFloat height = self.tableView.frameHeight - self.navigationController.navigationBar.frameHeight - [UIApplication sharedApplication].statusBarFrame.size.height - (self.rowCount * self.rowHeight);
self.tableView.tableHeaderView.frameHeight = height / 2.0;
}
J'ai donc soustrait à la hauteur de la navigationBar & la barre d'état et la hauteur des cellules de la tableView hauteur pour obtenir la hauteur de la zone vide.
Maintenant que je reçois la hauteur si la zone vide, je l'ai divisé en 2 pour le pied de page et en-tête de la vue.
- définir image de la vue de la table de façon dynamique
- collez le code qu'a u encore essayé?
- J'ai mis à jour la question. Merci.
- qu'entendez-vous par centre ?
- vous pouvez ajouter l'image qu'avez-vous envie?
- c'est ce que je veux: drive.google.com/file/d/0B5EXlMeZdF31R0JpcXF1RjUwZnc/... c'est le courant: drive.google.com/file/d/0B5EXlMeZdF31UGhldFhibEZBVXc/... Désolé, je n'ai pas assez de réputation pour télécharger une photo.
- est-ce la vue de la table
- Oui, il est et je suis l'aide de mise en page automatique.
- vérifier ma réponse
Vous devez vous connecter pour publier un commentaire.
Dans le viewWillAppear et dans le didRotateFromInterfaceOrientation fonctions :
Cela permettra de résoudre votre problème.
MODIFIER
Appeler le updateTableViewContentInset fonction dans le viewWillLayoutSubviews et après chaque reloadData :
Objectif-C
Swift 4
headerHeight = MAX(0, headerHeight);
self.tableView.rowHeight
au lieu deROW_HEIGHT
?tv.rowHeight = UITableView.automaticDimension
&tv.estimatedRowHeight = UITableView.automaticDimension
Remplacer
viewDidLayoutSubviews
et de comparer les tableView deframe
avec sescontentSize
pour définir soncontentInset
. Dans Swift 4 :Cela fonctionne bien avec l'auto-dimensionnement de la vue de la table cellules
self.tableView.contentInset = UIEdgeInsets(top: topInset, left: 0.0, bottom: 0.0, right: 0.0)
viewDidLayoutSubviews
laself.tableView.contentSize.height
est calculée de la forme de laestimatedRowHeight
pas le redimensionnement des cellules. le déplacement de cette pourviewDidAppear
fera l'affaire. Mais pas sûr si c'est une bonne solution.Utiliser le
contentSize
propriété deUITableView
, que la façon dont vous n'avez pas à prendre de la celluleheight
oucount
en compte.Mise à jour de la
contentInsets
après rechargementtableView
de données, et lorsque le contenant de vue de latableView
devient visible (viewWillAppear:
) et quand il change de taille (viewWillTransitionToSize:withTransitionCoordinator:
).Swift 3 basé sur Pipiks réponse
Ajouter un
UIView
en haut (UIView devrait être parent de votre TableView) de votreTableView
du storyboard. Après cet ensemble de ses contraintes pour remplir la vue. Maintenant, définissez la taille de votre TableView et l'ensemble de ses contraintes pour centrer verticalement et horizontalement votre topUIView
. Cela permettra de résoudre votre problème.J'ai trouvé la cause de mes mauvais calcul. La valeur de l'auto.tableView.les limites.taille.la hauteur est différente de la hauteur réelle dans viewWillAppear. J'ai utilisé l'auto.vue.les limites.taille.la hauteur de la place.
pour SWIFT 3 :
RÉSULTAT :
Ensemble cadre de votre UITableView comme ce
ou essayez cette