UITableView est de commencer avec un décalage dans iOS 7
J'ai traîné un plain jane UITableView sur un UIViewController dans iOS 7.
Maintenant il y a un décalage vertical de l'espace avant la première cellule commence. Comment puis-je me débarrasser de lui? Je veux de la première ligne à être beaucoup plus près du bord supérieur de où la UITableView commence réellement. Je n'ai pas demandé pour le grand décalage que j'ai?
Des idées?
- J'ai été aidé par le texte suivant: YouStoryboard.storyboard > YouViewController > les Attributs de l'inspecteur de > Décocher - Ajuster le défilement de l'affichage des encarts.
- btw, vous pouvez prendre une capture d'écran du Simulateur iOS à l'aide de touche de Commande + S
- J'ai aussi été aidé par vos suggestions, cependant décochant la ExtendEdges.UnderTopBars causés à nouveau le décalage vertical de l'espace à apparaître. Je ne sais pas si ses une des (nombreuses?) bugs dans Xcode6, mais ces questions me donner quelques maux de tête une fois de temps en temps!
Vous devez vous connecter pour publier un commentaire.
Par défaut, la vue de la table contrôleurs pad le contenu sous la barre de navigation de sorte que vous pourriez faire défiler le contenu sous, on le voit, dans un état trouble, en dessous de la barre de navigation/de la barre d'outils.
Dirait que vous êtes un positionnement au 44 (peut-être 64 ans)px pour la faire sortir de sous la barre de navigation, mais elle compense ce défaut de sorte que vous obtenez un grand écart.
Aller à la table de montage séquentiel/xib au bureau de l'IB et décocher la afficher le contenu sous la barre de navigation de trucs.
Adjust Scroll View insets
, supprimer la coche.La nouvelle iOS 7 mise en œuvre de UIViewController a une nouvelle série d'options qui permet au développeur de choisir si le système va automatiquement ajouter des encarts pour UIScrollView, UITableView et les dérivations.
Pour désactiver ce comportement décochez ces cases pour tous vos voulais UIViewControllers dans InterfaceBuilder, sur UIViewController sélectionné inspecteur d'objet:
Pour plus de détails:
Depuis iOS7 guide de transition:
Adjust Scroll View Insets
case à cocher pour la vue schématique du contrôleur.automaticallyAdjustsScrollViewInsets = NO
en-vue-contrôleur.j'ai eu un problème similaire, après avoir rejeté un viewController, le contentOffset de mon tableView a été changé en (0, -64).
ma solution était un peu bizarre, j'ai essayé tous les autres réponses, mais n'avait pas de succès, la seule chose qui a résolu mon problème a été de passer la tableView position dans le contrôle de l'arbre de la .xib
il a été le premier contrôle de la Vue parent comme ceci:
J'ai déplacé le tableView juste après l'ImageView et il a travaillé:
il semble que le fait de mettre la table dans la première position a été à l'origine du problème, et le déplacement de la vue de la table à un autre poste fixe le problème.
P. D. je ne suis pas à l'aide de mise en page automatique ni les storyboards
j'espère que cela peut aider quelqu'un!
il résoudre mon problème similaire:
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
Essayez d'utiliser cette
tableView.separatorInset = UIEdgeInsetsZero;
Évidemment, si vous êtes à la prise en charge des moins de iOS7, vous devez vous assurer que l'objet répond à ce sélecteur avant de l'appeler.
Sérieusement, l'évolution
contentOffset
n'est pas la solution. Vous êtes juste en bidouillant un problème et de ne pas résoudre la cause. J'ai été confronté au même problème et il s'avère que regroupés tableViews ont un rembourrage sur le dessus. Dans mon cas, le réglage du type de plaine a fait le tour.J'espère qu'il sauve quelqu'un en quelques minutes.
Z.
Avec iOS 9, aucune des autres réponses à partir de cette page a fonctionné pour moi (c'est à dire en décochant les cases dans la table de montage séquentiel, réglage
automaticallyAdjustsScrollViewInsets
àNO
).Ma solution, je suis vraiment mécontent sujet était:
Les mêmes lignes dans
viewWillAppear
ouviewDidLoad
ont été inefficaces.Adjust Scroll View insets
case fonctionne pour iOS 9.Parfois, je reçois un
64
hauteur de l'écart au sommet de ma Table quand leUIViewController
est incorporé à l'intérieur d'une manette de Navigation.Dans le passé, je viens de re-créer tout, en espérant que les contraintes liées à son tour correctes après une ardoise propre.
TIL: Si vous ne voulez pas faire une verticale de la contrainte à la
Top Layout Guide
, vous pouvez maintenir enfoncée laOption
clé pour accéder à laContainer Margin
.Alors assurez-vous que le
Top Space to Superview
constante est définie à0
. Cela a fonctionné pour moi au moins.Cela fonctionne pour moi:
Si vous ajoutez un vide UIView avant UITableView (ou de n'importe quelle vue est scrollable comme le ScrollView et TextView), vous pouvez avoir une chance.
J'ai eu un UITableViewController intégré dans un conteneur en vue. Pour se débarrasser des indésirables 64 points de l'espace vertical, j'ai besoin d'décochez la case "Ajuster le Défilement de l'Affichage des Encarts" dans Interface Builder et définir la UITableView de contentInset dans mon UITableViewController de viewWillAppear comme ci-dessous.
La taille de l'espace vertical semble correspondre à la barre de navigation de la hauteur du cadre et y offset. Le problème ne s'est produite que sur iOS 7.
Dans Xamarin iOS, j'ai eu ce problème survenant sur un backgrounded UITableViewController juste après le premier plan de dialogue modale a été rejeté. Dans le processus de déplacement dans le premier plan, la UITableViewController avait encarts de jeu (quelque part par iOS):
Cette classe résolu
De temps en temps, je reviens à cette terrible situation, et je remarque que c'est encore assez inconnu. Donc, pour l'avenir de la mémoire...
Dernièrement, je suis de fixation avec cette solution de contournement.
Ne me demandez pas pourquoi, je pense toujours que c'est un bug de profondeur dans UIKit.
Si vous allez à la table de montage séquentiel, vous pouvez modifier le décalage en sélectionnant la table et sous la Table à la section Affichage dans les Attributs de l'inspecteur, il suffit de changer le Séparateur des Encarts sur la gauche pour 0.
Je pense que la vraie solution est de configurer votre haut et en bas des contraintes sur la tableview être égale à la topMargin et bottomMargin. Pas le haut de page et bas de page. Cela vous permet de garder automaticallyAdjustsScrollViewInsets pour être vrai.
Swift 3 solution:
Si vous avez intégré votre TableViewController dans un NavigationController ou un ContainerView,
You have to constraint to margins instead of top Layout guide in Storyboard
.Check constraint to margins when you are doing the constraints
Pas d'autre moyen a fonctionné pour moi. Je ne pouvais pas le commentaire, donc je suis juste en réitérant sur Robert Chen réponse.J'ai essayé plusieurs réponses. Modifier les paramètres dans le storyboard causé ondulation des problèmes avec une superposition de menu qui apparaît à partir de la gauche.
Je n'ai qu'un vide UIViewController dans le storyboard, sinon tout est généré par programmation.
J'ai le même problème avec un UITableView à l'intérieur d'une UIView à l'intérieur d'un UIViewController. À savoir, les en-têtes de section démarrer trop loin vers le bas quand le UIViewController est intégré dans une manette de Navigation. W/o la manette de navigation tout fonctionne bien.
Pour résoudre le problème j'ai créé un UILabel et avec des contraintes à la UILabel bas contrainte = sommet de la contrainte de la UIView (afin de ne pas montrer à l'écran. Aujourd'hui, un contrôle supplémentaire (la nouvelle Étiquette) de la TableView se comporte correctement.
J'ai eu le même problème dans iOS 11 et xib, UITableviewController et je l'ai résolu comme ci-dessous