J'ai besoin d'ajouter un espace vide en haut de mon UITableView qui n'affecte pas la taille de la zone de contenu. Décaler le contenu ou ajouter une cellule vide n'est PAS ce que je veux faire. Au lieu de cela, je veux juste un décalage.
Comment?
Je ne sais pas si je vous suis mais je pense que j'ai la même situation. Dans mon cas, je dois donner un peu d'espace à ADBannerView en haut de l'écran, donc ce que j'ai fait était dans la méthode viewDidLoad, j'ai ajouté:
[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];
les valeurs qu'il prend sont UIEdgeInsetsMake (haut, gauche, bas, droite).
Alternativement 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)
Vous pouvez ajouter une vue d'en-tête "vide" à la table ... cela donnerait l'apparence initiale de la table d'avoir un décalage, mais une fois que vous avez commencé à faire défiler, le décalage disparaîtrait. Ce n'est pas ce que vous voulez.
Si vous avez besoin d'un décalage permanent et que vous n'utilisez pas déjà des en-têtes de section, vous pouvez créer le décalage de la même manière que ci-dessus en créant des vues personnalisées pour les en-têtes de section, surtout si vous n'avez qu'une seule section, cela pourrait vous donner l'apparence d'un décalage permanent .
Je peux poster un exemple de code si cela ressemble à ce que vous recherchez.
J'ai combiné la réponse de Jigzat avec:
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 320, 1) animated:NO];
dans
- (void)viewDidLoad
donc la première cellule n'est pas en haut.
On dirait que vous voulez envelopper une 'Vue' autour de votre UITableView
. Si vous avez un UITableViewController
dans IB, le UITableView
sera automatiquement défini sur le view
de UITableViewController
. Vous changez la propriété view
en une UIView
normale et ajoutez votre UITableView
dedans et lui donnez un décalage.
--- Modifier --- Je viens de lire mon article et j'ai pensé que cela n'avait pas de sens :) Lorsque vous créez un UITableViewController
vous obtenez ceci (en pseudo code):
UITableViewController.view = UITableView
Cela signifie que la table réelle occupera tout l'espace et que vous ne pourrez même pas ajouter d'autres vues. Vous devez donc changer la
UITableViewController.view = UIView
et ajoutez votre table à ce UIView
J'ai combiné cette réponse avec celle-ci: https://stackoverflow.com/a/9450345/1993937
Pour que la tableView apparaisse en haut de l'encart de contenu, afin que l'espace en haut ne soit pas coupé en faisant défiler légèrement la tableView lorsque la vue apparaît initialement. (18 est mon premier écart)
[self.tableView setContentInset:UIEdgeInsetsMake(18,0,0,0)];
[self.tableView setContentOffset:
CGPointMake(0, -self.songListTable.contentInset.top) animated:YES];