69 votes

iOS 7 -- navigationController définit le contentInset et le ContentOffset de mon UIScrollView

J'ai un UIScrollView (en fait un UICollectionView, mais cela n'a probablement pas d'importance). Lorsqu'il apparaît dans IOS 7, le contrôleur de navigation définit son contentInset et son contentOffset à des valeurs que je ne souhaite pas. Il semble qu'il essaie de s'adapter à la barre d'état et à la barre de navigation. Je préférerais qu'il les laisse tranquilles. J'ai résolu ce problème en surchargeant les méthodes getter et setter pour contentInset et contentOffset, avec un drapeau pour indiquer à l'objet s'il doit ou non accepter un jeu. Mais y a-t-il un meilleur moyen ?

208voto

KDaker Points 3571

Essayez de régler self.automaticallyAdjustsScrollViewInsets = NO dans votre contrôleur de vue principal.

Cette mesure a été introduite en iOS 7 donc vous pourriez vouloir envelopper cela avec une vérification de la version d'iOS, si vous supportez iOS 6 et ci-dessous.


Mise à jour

Si vous utilisez des storyboards, vous pouvez le faire dans le constructeur d'interface ainsi qu'en vérifiant 'Adjust Scroll View Insets' pour votre contrôleur sélectionné.

enter image description here

25voto

Gerardo Medina Points 279

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é toutes les autres réponses mais sans succès, la seule chose qui a résolu mon problème était de changer la position du tableView dans l'arbre des contrôles du .xib.

c'était le premier contrôle dans la vue parent comme ceci :

before

J'ai déplacé le tableView juste après l'ImageView et ça a marché :

after

il semble que le fait de placer la vue de la table dans la première position causait le problème, et le fait de déplacer la vue de la table dans une autre position a réglé le problème.

P.D. Je n'utilise pas autoLayout ni les storyboards.

J'espère que cela pourra aider quelqu'un !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X