2017-05-07 2 views
0

J'essaie de travailler sur l'optimisation de mon application pour le paysage et les petits écrans. Je suis principalement en utilisant des vues de défilement pour réaliser ceci. Dans une de mes vues j'ai une vue de récipient. Cette vue de conteneur semble parfaite lorsque je bascule entre les périphériques dans le storyboard. La vue de conteneur est mappée à un contrôleur de vue qui possède une vue de défilement dont l'en-tête supérieur, inférieur, principal et arrière est défini sur 0. Il doit donc remplir le conteneur. Le contrôleur de vue réel est défini sur Taille simulée de forme libre avec une largeur de 263 et une hauteur de 190 (la taille exacte du contenu à l'intérieur de la vue de défilement).iOS Scroll View permet de faire défiler le contenu passé

A l'intérieur de la vue déroulante, j'ai juste des étiquettes affichant des informations.

Tout semble fonctionner correctement. Sur les appareils plus petits ou en mode paysage, vous pouvez faire défiler pour afficher le contenu et afficher toutes les étiquettes.

Seul le problème est sur tous les périphériques et tailles d'écran que vous pouvez faire défiler le contenu. Dans les deux axes X et Y. Ce qui est étrange sur l'axe horizontal, c'est que la largeur de la vue conteneur est définie sur 263. La seule raison pour laquelle j'utilise une vue de défilement est pour la hauteur. Il n'y a pas de problèmes de largeur, même sur les petits écrans. Mais il permet toujours à l'utilisateur de faire défiler horizontalement.

Pour un exemple plus précis sur un iPhone 4s en mode paysage, la vue du conteneur est de 263 largeurs et 90 de hauteur. Mais le contenu lui-même est 263 largeur et 190 hauteur. Je veux donc que l'utilisateur puisse faire défiler vers le bas pour voir le reste de cette valeur de 100 contenus. Mais actuellement, il permet à l'utilisateur de défiler latéralement et de passer la fin du contenu en défilant vers le bas.

Comment puis-je résoudre ce problème afin que l'utilisateur ne puisse pas faire défiler le contenu?

S'il vous plaît laissez-moi savoir si vous avez besoin de plus de détails ou d'informations. Expliquer les détails du story-board peut parfois être un peu difficile, donc je serais heureux de fournir des détails supplémentaires pour le rendre plus clair.

Répondre

1

Tout comme la réponse à votre autre question, la clé est de comprendre que le défilement de contenu détermine la zone défilante.

Supposons que vous ayez « TopLabel » des contraintes imposées aux Leading: 0 et Top: 0. L'étiquette sera dans le coin supérieur gauche du contenu et définiront le coin supérieur gauche de la zone de contenu de la vue de défilement .

Maintenant, mettez « BottomLabel » ci-dessous et à droite, et définir des contraintes à Trailing: 0 et bas: 0.

À ce stade, la configuration automatique ne sait pas où mettre le haut et une partie gauche de "BottomLabel" parce que la zone de défilement n'est pas entièrement définie. Donc, si vous ajoutez des contraintes à "BottomLabel" de Leading: 60 et Top: 400, le coin en haut à gauche de "BottomLabel" sera placé à 60.400 et la zone de défilement - contentSize de la vue de défilement sera 60 + width of BottomLabel x 400 + height of BottomLabel

pour éviter de faire défiler passé la dernière vue/image/étiquette que vous voulez voir, vous devez vous assurer que contraintes de l'élément contrôlent la largeur et la hauteur du contenu du scrollview.