J'ai fait glisser un simple Jane UITableView sur un UIViewController dans iOS 7.
Il y a maintenant un décalage vertical de l'espace avant le début de la première cellule. Comment m'en débarrasser? Je veux que la première ligne soit beaucoup plus proche du bord supérieur de l'endroit où UITableView commence réellement. Je n'ai pas demandé le grand décalage n'est-ce pas?
Des idées?
uitableview
ios7
user798719
la source
la source
Réponses:
Par défaut, les contrôleurs de vue de table garniront le contenu sous la barre de navigation afin que vous puissiez faire défiler le contenu en dessous et le voir, dans un état flou, sous la barre de navigation / barre d'outils.
On dirait que vous le positionnez à 44 (peut-être 64) px pour le déplacer hors de la barre de navigation, mais cela compense déjà cela, vous obtenez donc un grand écart.
Accédez au storyboard / xib dans IB et décochez le contenu de l'émission sous les éléments de la barre de navigation.
la source
Adjust Scroll View insets
, supprimez la coche.La nouvelle implémentation iOS 7 de UIViewController dispose d'un nouvel ensemble d'options qui permet au développeur de choisir si le système ajoutera automatiquement des insertions pour UIScrollView , UITableView et les dérivés.
Pour désactiver ce comportement, décochez ces cases pour tous vos UIViewControllers voulus dans InterfaceBuilder, sur l' inspecteur d'objet sélectionné UIViewController :
Pour plus de détails:
la source
À partir du guide de transition iOS7:
la source
Adjust Scroll View Insets
case de la disposition du contrôleur de vue.automaticallyAdjustsScrollViewInsets = NO
dans le contrôleur de vue.J'ai eu un problème similaire, après avoir rejeté un viewController, le contentOffset de ma tableView a été changé en (0, -64).
ma solution était un peu bizarre, j'ai essayé toutes les autres réponses mais sans succès, la seule chose qui a résolu mon problème était de changer la position tableView dans l'arborescence des contrôles du .xib
c'était le premier contrôle dans la vue parent comme ceci:
J'ai déplacé la tableView juste après l'ImageView et cela a fonctionné:
il semble que mettre la vue de la table en première position causait le problème, et déplacer la vue de la table vers une autre position résolvait le problème.
PD je n'utilise pas autoLayout ni storyboards
j'espère que cela peut aider quelqu'un!
la source
cela résout mon problème similaire:
la source
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
Essayez d'utiliser ceci
tableView.separatorInset = UIEdgeInsetsZero;
Évidemment, si vous prenez en charge quelque chose de moins qu'iOS7, vous devrez vous assurer que l'objet répond à ce sélecteur avant de l'appeler.
la source
Sérieusement, changer
contentOffset
n'est pas la solution. Vous corrigez simplement un problème et ne corrigez pas la cause. J'ai été confronté au même problème et il s'avère que les tables groupées ont un rembourrage sur le dessus. Dans mon cas, définir le type sur plain a fait l'affaire.J'espère que cela fera gagner quelques minutes à quelqu'un. Z.
la source
Avec iOS 9, aucune des autres réponses de cette page n'a fonctionné pour moi (c'est-à-dire décocher les cases dans Storyboard, définir
automaticallyAdjustsScrollViewInsets
surNO
).Ma solution de contournement dont je ne suis vraiment pas satisfait était la suivante:
Les mêmes lignes
viewWillAppear
ouviewDidLoad
étaient inefficaces.la source
Adjust Scroll View insets
case fonctionne pour iOS 9.Parfois, j'obtiens un
64
écart de hauteur en haut de ma vue tableau lorsque leUIViewController
est intégré à un contrôleur de navigation.Dans le passé, je ne faisais que tout recréer, en espérant que les contraintes s'avéreraient correctes après une table rase.
TIL: Si vous ne souhaitez pas appliquer de contrainte verticale au
Top Layout Guide
, vous pouvez maintenir laOption
touche enfoncée pour accéder auContainer Margin
.Assurez-vous ensuite que la
Top Space to Superview
constante est définie sur0
. Cela a fonctionné pour moi au moins.la source
Cela fonctionne pour moi:
la source
Si vous ajoutez un UIView vide avant UITableView (ou n'importe quelle vue peut faire défiler comme ScrollView et TextView), vous pouvez avoir de la chance.
la source
J'avais un UITableViewController intégré dans une vue de conteneur. Pour me débarrasser des 64 points indésirables d'espace vertical, je devais décocher la case `` Ajuster les inserts de vue de défilement '' dans Interface Builder et définir le contentInset de UITableView dans la vue de mon UITableViewController comme ci-dessous.
La taille de l'espace vertical semble correspondre à la hauteur du cadre et au décalage y de la barre de navigation. Le problème ne s'est produit que sur iOS 7.
la source
Dans Xamarin iOS, ce problème se produisait sur un UITableViewController en arrière-plan juste après la fermeture de la boîte de dialogue modale de premier plan. En train de passer au premier plan, l'UITableViewController avait des insertions définies (quelque part par iOS):
Cette classe l'a résolu
la source
De temps en temps, je reviens à cette situation horrible et je constate qu'elle est encore assez inconnue. Donc, pour la mémoire future ...
Dernièrement, je corrige avec cette solution de contournement.
Ne me demandez pas pourquoi, je pense toujours que c'est un bug profondément dans UIKit.
la source
Si vous accédez au storyboard, vous pouvez modifier le décalage en sélectionnant le tableau et sous la section Vue du tableau de l'inspecteur d'attributs, il vous suffit de changer les encarts de séparation à gauche sur 0.
la source
Je pense que la vraie solution est de configurer vos contraintes supérieure et inférieure sur la vue de la table égales à topMargin et bottomMargin. Pas le guide de disposition supérieur et le guide de disposition inférieur. Cela vous permet de conserver automatiquementAdjustsScrollViewInsets sur true.
la source
Solution Swift 3:
la source
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
Aucun autre moyen n'a fonctionné pour moi. Je ne pourrais pas faire de commentaire, je répète donc la réponse de Robert Chens.la source
J'ai essayé plusieurs des réponses. La modification des paramètres dans le storyboard a causé des problèmes d'ondulation avec un menu de superposition qui apparaît à partir de la gauche.
Je n'ai qu'un UIViewController vide dans le storyboard, sinon tout est généré par programme.
J'ai le même problème avec un UITableView à l'intérieur d'un UIView à l'intérieur d'un UIViewController. À savoir, les en-têtes de section commencent trop bas lorsque l'UIViewController est intégré dans un contrôleur de navigation. Sans le contrôleur de navigation, tout fonctionne correctement.
Pour résoudre le problème, j'ai créé un UILabel et avec des contraintes placé la contrainte inférieure UILabel = la contrainte supérieure de l'UIView (afin qu'elle ne s'affiche pas à l'écran. Maintenant, avec ce contrôle supplémentaire (le nouveau Label), le TableView se comporte correctement.
la source
J'ai eu le même problème dans iOS 11 et xib, UITableviewController et je l'ai résolu comme ci-dessous
la source