8
votes

ScrollView avec barre de navigation + mise en page automatique

J'ai un mode de vue intégré à NavigationController. J'ai placé ScrollView à l'intérieur, puis la vue de contenu couvrant la surface complète (pour définir la taille du contenu de ScrollView) et certaines étiquettes. J'ai essayé de définir des contraintes pour toutes les commandes mais j'ai échoué.

Voici comment il ressemble à xcode:

 vue xcode

Et ceci est dans le simulateur:

 VUE SIMULANT

La couleur rouge est la vue sur le défilement, la vue de contenu vert. Bien sûr, je peux faire défiler la vue pour obtenir l'étiquette inférieure à l'écran.

Qu'est-ce que j'ai mal fait? Quelles sont les contraintes appropriées? Je veux bien sûr que le ScrollView couvre toute la zone utilisable de la fenêtre (à partir de la barre de navigation au bas de l'écran).

Pour une référence complète, vous pouvez Téléchargez le projet .


7 commentaires

J'ai émulé le comportement de la vue de défilement en utilisant uipangesureecognizer mais la question de la vue de défilement et de la mise en page automatique est toujours en place.


Peut-être cette réponse ( lien ) utile


Essayez de vérifier "Ajuster le défilement de la vue Incarts d'inscription" sur votre mode de vue du constructeur d'interface. (Je me rends compte que c'est une ancienne question)


Comment avez-vous résolu votre problème? J'ai le même problème...


Je ne me souviens pas :(


Avez-vous eu la solution ou non? J'ai essayé des réponses ci-dessous mais je ne travaille pas


Comme je l'ai écrit ci-dessus, je ne me souviens pas. Je ne coporte plus pour iOS, alors je ne me souviens même pas de quel projet était ceci.


4 Réponses :


3
votes

Je pense que l'écart que vous voyez est causé par la barre de navigation. L'espace est éteint la taille 64, qui est la taille de la barre de navigation + barre d'état (44 + 20). Vous devez contraindre la barre de défilement vers le guide de mise en page supérieur.de en poussant cette 64 négativement. Donc, votre Top ScrollView Top Constrant sera de -64.

Ceci peut également être effectué en un clic, en cliquant sur la vue Vue de la position dans Inspecteur de taille en Xcode.

Cliquez sur la vue de la position et sélectionnez Remplir le conteneur de remplissage verticalement .C'est contraint de ScrollView au guide de mise en page supérieur. Maintenant, sélectionnez la vision de ScrollView et cliquez sur les contraintes de mise à jour dans le storyboard.

 Entrez la description de l'image ici

Comme vous pouvez le constater, le contenuView n'est pas construit pour couvrir la vue, comme SchollView, il y a de place sur le bouton de la vue du contenu, lorsque la vue se charge, la barre de navigation occupera l'espace supplémentaire et le contenu Soyez exactement là où vous avez besoin.


2 commentaires

Cela a fait l'affaire et a déplacé le contenu supérieur mais je peux toujours faire défiler la vue et voir la vision de Scroll Rouge en bas.


J'ai également quatre avertissements en raison de différentes positions de contrôles au moment de l'exécution.



3
votes

Voici un bon tutoriel sur ScrollView et la mise en page automatique. Je passe beaucoup de temps avec le même type de problème jusqu'à ce que ce tutoriel. http://spin.atomicObject.com/2014/03/05/ Uiscrollview-Autolayout-iOS / .

Le moyen est de faire glisser la vue ScrollView et le contenu de la vue de la zone comme s'il n'y avait pas de barre de navigation. Faire également des contraintes appropriées.


1 commentaires

J'ai vu ce tutoriel mais je ne pouvais pas obtenir cela pour travailler de toute façon :(



6
votes

SWIFT 3:

self.automaticallyAdjustsScrollViewInsets = false


1 commentaires

Utilisation de l'interface Builder / Storyboard Qu'est-ce qui fonctionne pour moi, c'est de la décocher à partir de l'inspecteur des attributs de scène.



0
votes

Le code SWIFT 3 fonctionne, mais le constructeur d'interface tente de compenser la barre de navigation afin d'ajouter une vue ignorer la barre et de placer la vue sur elle. L'IB va compenser.


0 commentaires