Extra Space (encart) dans Scroll View au moment de l'exécution
Installation:
Je suis en train de travailler sur une vue dans Xcode 5 qui affiche un ensemble d'objets textfield. Afin de gérer le défilement lorsque le clavier est en place, je suis l'aide d'un rouleau, pour placer mes objets textfield. Je suis en utilisant la mise en page automatique.
Problème:
Je suis aux prises avec un problème où l'espace supplémentaire est ajoutée à la partie supérieure de ma défilement de la vue au moment de l'exécution. Comme un encart est appliqué à mon défiler la vue, bien que j'ai confirmé par l'enregistrement qui les encarts sont de zéro.
Dans mon viewDidLoad() implémentation de la méthode que je suis en train de faire ce pour confirmer les valeurs...
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.scrollView.contentInset = contentInsets;
self.scrollView.scrollIndicatorInsets = contentInsets;
self.scrollView.contentSize = self.scrollView.bounds.size;
self.scrollView.contentOffset = CGPointMake(0.0, 0.0);
NSLog(@"Content Size: %f x %f", self.scrollView.contentSize.height, self.scrollView.contentSize.width);
NSLog(@"Bounds Size: %f x %f", self.scrollView.bounds.size.height, self.scrollView.bounds.size.width);
NSLog(@"Frame Size: %f x %f", self.scrollView.frame.size.height, self.scrollView.frame.size.width);
NSLog(@"Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
NSLog(@"Scroll Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
De sortie:
2013-10-08 11:38:42.953 test[6440:a0b] Content Size: 455.000000 x 320.000000
2013-10-08 11:38:42.954 test[6440:a0b] Bounds Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Frame Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Inset Size top: 0.000000 bottom: 0.000000
2013-10-08 11:38:42.956 test[6440:a0b] Scroll Inset Size top: 0.000000 bottom: 0.000000
L'espace(en médaillon) ont été ajoutées au-dessus de ma première textfield semble être à peu près égale à la norme en-tête de navigation, mais qui pourrait être une coïncidence.
Mon scroll view est situé à une hauteur de 455 avec une valeur y de 64 afin d'ajustement entre la navigation de la barre d'état et la barre d'onglet en bas.
Je n'ai pas de mise en page des notifications de problèmes potentiels. Le défilement de la vue en haut et en bas de l'espace de contrainte est positionné pour être 0 points (je présume de l'état et des barres d'onglets.
Lors de l'exécution de l'application et de voir l'espace supplémentaire dans le défilement de la vue, la barres de défilement ne sont couvrant les attendus de l'espace (ils ne comprenant pas cet espace supplémentaire dans le cadre de la zone déroulante).
Une dernière chose à noter. Quand j'exécute mon clavier notification de la logique. (prises d'apple ici...) Le problème se résout de lui-même, pas plus d'espace. Qui donne l'impression d'un problème d'initialisation avec ce qui est configuré dans la table de montage séquentiel?
Merci!
source d'informationauteur Michael Bopp
Vous devez vous connecter pour publier un commentaire.
UIViewControllers dans iOS7 ont un paramètre appelé
automaticallyAdjustsScrollViewInsets
. Si c'estYES
le défilement de la vue des encarts seront automatiquement ajustés en fonction de la hauteur de la barre d'état, barre de navigation et la barre d'outils ou la barre d'onglet.Ce paramètre peut également être définie dans Interface Builder; elle est appelée "Ajuster le Défilement de l'Affichage des Encarts" sur les Attributs de l'Inspecteur.
En plus de la désactivation de "Régler le Défilement de l'Affichage des Encarts" sur l'affichage de contrôleur de l'IB comme indiqué par Greg, j'ai trouvé qu'une autre manière de résoudre ce problème est de modifier le "Alignement en Haut" contrainte que j'ai eu entre le rouleau et la vue de haut de page. La modification de la dernière de "Haut de page.Bas" à "Haut de page.Top" rend les choses semblent OK au moment de l'exécution, bien que l'on peut encore voir de l'espace supplémentaire dans la table de montage séquentiel (Xcode 6.4).
Dans la méthode viewDidLoad appeler cette ligne de code: