J'ai UITextView avec du texte dedans. Tout allait bien avec iOS 6, mais maintenant avec iOS 7, il laisse l'espace vide en haut, puis place le texte en dessous du milieu de la vue de texte.
Je n'ai défini aucun contentOffSet. Veuillez aider!
J'ai UITextView avec du texte dedans. Tout allait bien avec iOS 6, mais maintenant avec iOS 7, il laisse l'espace vide en haut, puis place le texte en dessous du milieu de la vue de texte.
Je n'ai défini aucun contentOffSet. Veuillez aider!
Réponses:
Une vue de texte est une vue de défilement. Les contrôleurs de vue ajouteront automatiquement un décalage de contenu pour faire défiler les vues, car il est supposé qu'ils voudront défiler derrière la barre de navigation et la barre d'état.
Pour éviter cela, définissez la propriété suivante sur le contrôleur de vue contenant la vue de texte:
self.automaticallyAdjustsScrollViewInsets = NO
La réponse actuelle qu'IronManGill a donnée n'est pas une bonne solution, car elle n'est pas basée sur une compréhension de la raison pour laquelle le problème se produit en premier lieu.
La réponse de jrturton n'est pas non plus le moyen le plus propre de le résoudre. Vous n'avez pas besoin de passer outre. Rester simple!
Tout ce dont vous avez besoin est de définir les paramètres suivants:
self.automaticallyAdjustsScrollViewInsets = NO;
dans la méthode viewDidLoad.
Consultez la documentation: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
automaticallyAdjustsScrollViewInsets
est obsolète. Depuis iOS11, utilisezcontentInsetAdjustmentBehavior
Dans le générateur d'interface,
Cela a fonctionné pour moi
textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;
Aller à Interface Builder
:
view controller
qui contient votretext view
Adjusts Scroll View Insets
propriétéJe me demande vraiment si c'est une vraie fonctionnalité ... Cet insert automatique de 64 points n'est ajouté que lorsque le UIScrollView
ou UITextView
comme la plus grande profondeur de toutes les sous-vues de la vue du contrôleur de vue. Par exemple, si vous ajoutez une vue derrière (ici je parle de z-buffer, pas d'imbrication de vue) la vue de défilement, cet encart de 64 points n'est pas automatiquement ajouté.
Par exemple, celui-ci ajoute l'encart:
Dans ce cas, l'encart n'est pas ajouté:
Cela me semble vraiment étrange… Pourquoi le système d'exploitation examinerait-il la profondeur de la vue pour décider s'il devrait étendre la vue?
Sur swift (Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
viewDidLoad
le contrôleur de vue avec la vue texte.
automaticallyAdjustsScrollViewInsets
est obsolète. Depuis iOS11, utilisezcontentInsetAdjustmentBehavior
J'ai résolu ce problème en définissant le décalage du contenu sur une valeur négative. Voici le code Swift.
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
[self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
Ce que vous devez comprendre, c'est que cela concerne la barre de navigation:
Solution pour Swift 4:
textView.textContainerInset = UIEdgeInsets.zero
C'est une solution non professionnelle, j'en suis sûr ... Mais le simple fait de mettre une étiquette vierge derrière la vue de texte résout le problème.