web-dev-qa-db-fra.com

iOS 7 UITableView: Comment supprimer de l'espace entre la barre de navigation et la première cellule

mon problème est le suivant: avec iOS 7 groupé UITableView, il y a un espace vide en haut de la table et dans la première cellule.

Ce qui est étrange, c'est que lorsque je charge le contenu pour la première fois, le tableau apparaît comme dans la première image, mais lorsque je fais défiler l'écran, un espace apparaît entre la première et la première cellule, comme dans la deuxième

enter image description hereenter image description here

Avec un style simple, ce comportement n’est pas apparu, mais malheureusement, j’ai besoin d’utiliser une vue groupée.

Des idées sur?

59
Fry

Ajoutez juste ceci dans votre méthode ViewDidLoad

self.automaticallyAdjustsScrollViewInsets = NO;
133
Slavcho

La réponse a été très amusante pour moi et mon équipe, et a fonctionné comme un charme

  • Dans le Générateur d'interface, déplacez simplement la vue table sous une autre vue dans la hiérarchie des vues.

RAISON:

Nous avons observé que cela se produit uniquement pour la première vue dans la hiérarchie de vues, si cette première vue est une vue UITableView . Ainsi, toutes les autres vues UITableViews similaires n'ont pas cette section gênante, à l'exception de la première . Nous avons essayé de déplacer UITableView hors de la première place dans la hiérarchie des vues et tout fonctionnait comme prévu.

37
Giorgos Ath

cela résout mon problème similaire:

if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){
tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);
}
25
Alex

Accédez à l'inspecteur d'attributs du contrôleur de vue en sélectionnant le xib ou le contrôleur dans Storyboard. Décochez la case Ajuster les incrustations de la vue de défilement dans Disposition . Ça va résoudre le problèmeenter image description here

16
Muhammad_Awaab

Si vous utilisez un UITableView avec un style groupé et un seul groupe, utilisez le style brut pour résoudre votre problème.

UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
12
clmntcrl

La solution la plus simple à ce problème dans le type groupé tableView est la suivante:

tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
3
Venu Gopal Tewari

Pour résoudre ce problème, assurez-vous que vous avez décoché ce champ sur ViewController:

Sur ViewController >> Inspecteur Attibutes >> Mise en page (décochée - Ajuster les incrustations d'affichage défilant)

 enter image description here

si cela ne suffit pas, essayez ceci sur TableView, définissez Style sur Plain:

 Example image

Cela résoudra votre problème

3
Daniel Beltrami

les gars! J'ai eu le même problème. TableView est apparu avec un espace libre entre la barre de navigation et la première cellule . Ce code m'a sauvé:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return 10;
    }
    else return 2;
}
2
Hot'n'Young

Il y avait un espace au-dessus de UITableView lui-même, ainsi qu'entre les cellules . J'ai trouvé ma solution dans 2 réponses différentes ci-dessus .. l'afficher à nouveau pour que personne ne manque les deux solutions.

Cela a supprimé l'espace d'en haut:

self.automaticallyAdjustsScrollViewInsets = NO;

et cela a supprimé les espaces situés sous les cellules: Définir l'attribut 'Style' de UITableView sur 'Plain'

1
love2script12

Je travaille avec Xcode 7.3.1, iOS9 et Swift 2. Je voudrais partager ce qui a fonctionné pour moi:

Ajoutez juste ceci dans votre méthode ViewDidLoad

self.automaticallyAdjustsScrollViewInsets = false;
1
IPL10

Avait un problème similaire, même en définissant automatiquementAdjustsScrollViewInsets à NO Cela a résolu pour moi:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
    return CGFLOAT_MIN;
}
0
iuricernov

Je me rends compte que cela a été répondu il y a longtemps, mais pour quiconque se heurtera à une situation similaire, je partagerai ce qui a finalement fonctionné pour moi:

Si vous utilisez une bibliothèque xib, sélectionnez la vue de niveau supérieur et définissez l'option "Barre d'état" sur "Aucune" dans la zone Mesures simulées de l'inspecteur des attributs. Correction de mon problème d'espacement.

0
Luke

Pour moi cela n'a pas fonctionné

self.automaticallyAdjustsScrollViewInsets = NO;

Cela a uniquement entraîné l'affichage de la vue sous la barre de navigation.

Ce qui a fonctionné pour moi a été d'aller dans mon story-board et de redimensionner ma tableView. Il semble que mon tableView avait un espace vide de 20 pixels au sommet pour permettre le statusBar. Je l'ai mis à l'échelle et tout est parfaitement aligné.

0
vinylDeveloper

À partir de iOS 7, vous obtenez automatiquement un en-tête de groupe et de l'espace. Comparez votre application à l'application Paramètres et vous verrez. Vous pouvez contourner ce problème en demandant à UITableView de définir une hauteur d'en-tête aussi petite que possible. Voir Comment cacher le premier en-tête de groupe .

0
Chuck Krutsinger

Je voyais cet espace supplémentaire au sommet d'une de mes vues de table dans une situation très étrange. 

Après avoir ajouté une UIScrollView comme vue racine de mon premier contrôleur dans ma pile de navigation, si je présentais le contrôleur suivant sous la forme d'une séquence Show Detail, mon contrôleur suivant disposerait de l'espace situé au-dessus de la vue de tableau.

La solution pour moi était de changer le lieu de passage en Present Modally et tout est rentré dans l'ordre.

La partie la plus étrange du changement de séquence a été que avant j’avais ajouté que ma vue racine était une variable UIScrollView, ma séquence Show Detail présentait le prochain contrôleur de manière modale. Pourtant, après, j'ai ajouté la racine UIScrollView, la séquence Show Detail était poussant sur le prochain contrôleur (ce qui n'était pas ce que je voulais).

0
Adam Johns