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 ?
Réponses
Trop de publicités?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é.
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 :
J'ai déplacé le tableView juste après l'ImageView et ça a marché :
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 !