UITableView + contenu Ajouter décalage en haut
-
22-09-2019 - |
Question
Je dois ajouter un peu d'espace vide au sommet de mon UITableView qui ne modifie pas la taille de la zone de contenu. Déplacer le contenu vers le bas ou l'ajout d'une cellule vide est pas ce que je veux faire. Au lieu de cela, je veux juste un décalage.
Comment?
La solution
Je ne sais pas si je vous suis, mais je pense que je vais avoir la même situation. Dans mon cas, je dois donner un peu d'espace à l'ADBannerView en haut de l'écran si ce que je faisais était dans la méthode viewDidLoad j'ai ajouté:
[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];
les valeurs qu'elle prend sont UIEdgeInsetsMake (en haut, à gauche, en bas, à droite).
Vous pouvez également la même chose avec Swift:
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)
Swift 4.2:
self.tableView.contentInset = UIEdgeInsets(top: 50, left: 0, bottom: 0, right: 0)
Autres conseils
Vous pouvez ajouter une vue d'en-tête « vide » à la table ... cela donnerait l'apparence initiale de la table pour avoir un décalage, mais une fois que vous avez commencé le défilement du décalage serait allé. Je ne sais pas c'est ce que vous voulez.
Si vous avez besoin d'un décalage permanent et ne sont pas déjà en-têtes de section, vous pouvez créer de la même décalage ci-dessus en faisant des vues personnalisées pour les en-têtes de section, surtout si vous avez juste une partie, cela pourrait vous donner l'apparence de un décalage permanent.
Je peux le code exemple si poster cela ressemble à l'un de ceux qui sont ce que vous recherchez.
Je combiné la réponse de Jigzat avec:
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 320, 1) animated:NO];
- (void)viewDidLoad
de sorte que la première cellule est pas au sommet.
Sons comme vous voulez envelopper 'View' autour de votre UITableView
. Si vous avez un UITableViewController
dans IB le UITableView
sera automatiquement réglé sur la view
de UITableViewController
. Vous pouvez changer la propriété view
à un UIView
normal et ajoutez votre UITableView
là-dedans et lui donner un décalage.
--- --- Modifier
Je viens de lire mon post et je pensais qu'il avait peu de sens :) Lorsque vous créez un UITableViewController
vous obtenez ceci (dans le code pseudo):
UITableViewController.view = UITableView
Cela signifie que la table réelle prendra tout l'espace et vous ne pouvez même ajouter d'autres points de vue. Donc, vous devez changer la balise
UITableViewController.view = UIView
et ajoutez votre table pour que UIView
Je combiné cette réponse avec celle-ci: https://stackoverflow.com/a/9450345/1993937
Pour faire apparaître le tableView en haut de l'encart de contenu, de sorte que l'espace en haut est pas coupée en ayant le tableView défilée en légère baisse lorsque la vue apparaît d'abord. (Figure 18 est mon écart supérieur)
[self.tableView setContentInset:UIEdgeInsetsMake(18,0,0,0)];
[self.tableView setContentOffset:
CGPointMake(0, -self.songListTable.contentInset.top) animated:YES];