web-dev-qa-db-fra.com

UIScrollView dans Storyboard ne fonctionne pas avec iOS 8 Classes de taille et autolayout

J'essaie donc de créer une UIScrollView uniquement dans le storyboard qui me permette d'ajouter des étiquettes de défilement supérieures à la hauteur du VC. Voici ce que j'ai fait: 

  1. Créé UIScrollView qui prenait la taille de n'importe quelle largeur ou hauteur VC

  2. Contraintes 0 pour l'espacement au plus proche voisin en haut, en bas, à gauche et à droite

  3. Création d'une vue qui est une subView de la UIScrollView avec la même largeur que n'importe quelle largeur, aucune hauteur VC mais hauteur de 1500 (parce que je veux seulement qu'elle défile verticalement). 

  4. Définissez les contraintes sur le voisin le plus proche sur 0 pour les positions UNIQUEMENT gauche, supérieure et droite, et définissez la contrainte de hauteur sur 1500.

  5. Je mets une étiquette en haut de la subView et en bas

Lorsque je lance l'application sur un iPhone 6, ne défile pas verticalement comme je le souhaite. Des idées pourquoi cela ne fonctionne pas? Merci d'avance.

22
Lucas

Pour obtenir le parchemin, vous devez épingler la sous-vue (la "vue du contenu") en haut, à gauche, en bas et à droite de la vue de défilement . De plus, vous devez lui donner (à la "vue du contenu") une explicite (= pas lié à la vue de défilement) hauteur et largeur car elles sont utilisées par la vue de défilement pour calculer sa taille de contenu. Dans votre cas, définissez une largeur égale à la largeur de la vue principale VC et une hauteur de 1 500 . Lorsque la largeur ou la hauteur sont supérieures à la taille de la vue à défilement, le défilement défile.

Contraintes de la vue de défilement (épinglées à la vue principale)

scroll view constraints

Vue du contenu (épinglé à scrollview + hauteur 1500, largeur = largeur de la vue principale) + contraintes d'étiquette (par exemple: 20 à 20 de la vue de contenu en haut à gauche)

content view + label constraints

45
valfer

Pour une visualisation plus facile, j'ai créé une vidéo sur la façon de le faire.

Vidéo sur la création d'un scrollview vertical uniquement sous iOS

8
Marco Almeida

Avez-vous défini la taille du contenu plus grande que l'écran lui-même? Dans votre cas, juste plus grand en hauteur.

Comme le dit la documentation Apple: "Vous devez définir la propriété contentSize sur la taille du contenu défilable. Elle spécifie la taille de la zone défilable."

1
pablogthuillier

La seule solution consiste à ajouter des contraintes à droite et au bas de la sous-vue inférieure de la vue enfant de la vue de défilement . Vérifiez également si toutes les vues de haut en bas ont les contraintes appropriées avec la hauteur . Pour la vue de défilement ' La vue wrapper ajoute des contraintes d'égale largeur et de hauteur égale à son aperçu.

0
komall