Comment puis-je utiliser la mise en forme automatique afin de définir des contraintes sur ma UIScrollview?

J'ai passé deux jours à essayer les différentes solutions pour Mixtes et Pures mise en page automatique des approches pour réaliser ce qui a été une mince scrollview de l'installation avant la mise en forme automatique, et c'est maintenant officiel: je dois être trop bête. Je suis cette mise en place principalement dans le Storyboard (bon, c'est juste la façon dont il est).

Voici donc mon appel à l'aide.

Viewtree:

UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton

Les boutons sont censés pour faire défiler horizontalement (de gauche à droite et vice-versa). Quelqu'un peut-il veuillez laissez-moi savoir comment définir les contraintes pour réaliser cela à l'aide de pure mise en forme automatique???

--

J'ai essayé de l'approche mixte, comme suit:

UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton

...et paramètre fixe la largeur et la hauteur des contraintes pour le contentview et la translatesAutoresizingMaskIntoConstraints paramètres comme par Apple note technique. Les boutons et le scrollview sont mis en place à l'aide de contraintes. Cela devient la scrollview de défilement (yay), mais hélas, ça défile trop loin! Aussi loin que je peux dire, le défilement largeur est en quelque sorte doublé de ce que j'ai mis le contentview à???!!!???

J'ai essayé de la pure mise en forme automatique approche, à la fois avec contentview et sans. Tous les points de vue sont translatesAutoresizingMaskIntoConstraints=NO, sauf pour self.view. Les boutons ont une largeur fixe/contraintes de hauteur, et sont épinglés à tous les quatre bords de la scrollview. Rien de parchemins.

Donc je suis totalement perplexe pourquoi je ne peux pas le faire fonctionner correctement. Toute aide est très appréciée, et si vous avez besoin d'autres infos, merci de demander!

Mise à JOUR de Capture d'écran avec la solution
buttonZ contraintes:

Comment puis-je utiliser la mise en forme automatique afin de définir des contraintes sur ma UIScrollview?

EDIT @ Jamie Forrest
Si la solution s'avère être le tort de fuite contrainte sur le dernier bouton. Au lieu de 6441, la valeur que j'avais mis était négatif, -6441. La chose la plus délicate est, que lors de la fixation de la valeur dans la table de montage séquentiel, il y a deux options dans le code Pin de la barre d'outils:

Comment puis-je utiliser la mise en forme automatique afin de définir des contraintes sur ma UIScrollview?

Le dessin Actuel de la Valeur est négative (ne menant à aucune de défilement), et l'option ci-dessous est positif (activation de défilement). Cela signifie que je ne suis pas stupide, mais au moins à moitié aveugle, je suppose. Bien que, pour ma défense, n'est-ce pas un peu inquiétant que XCode n'indique pas une erreur pour la "mauvaise" la mise en?

RÉÉDITÉ
Maintenant, c'est drôle... en changeant le point à la valeur de -6441 (pas de défilement) pour 6441 permis de défilement. Mais mon vieil ami, le "trop de contentsize" était de retour, conduisant à un contenu de taille deux fois plus grande que ce qu'elle devrait être! La solution pour obtenir le contenu de défilement a été de mettre le point à la contrainte à ZÉRO! Ce n'est pas évident lorsque l'on travaille dans le Storyboard, mais en regardant @l'Infini-Jacques-de-code, c'est ce qu'il devrait être.

  • Où voulez-vous calculer/définir la taille du contenu pour votre défilement de la vue? Se référant à votre première tentative à l'aide d'un contentView et vous avez dit qu'il défile trop loin.
  • Autant que je sache, vous ne pouvez pas définir la contentSize d'un UIScrollView utilisant seulement la mise en page automatique. Et c'est le contentSize qui définit la façon dont beaucoup vous pouvez faire défiler. De sorte que vous aurez à régler manuellement quelque part finalement. Pour le reste, vous pouvez utiliser la mise en page des contraintes pour configurer l'affichage des cadres les uns par rapport aux autres.
  • la taille du contenu est fixe, il ne change jamais. J'ai défini la taille du contenu dans la table de montage en tapant la bonne hauteur et de la largeur de la contentiview à la main, et je la broche de la hauteur et la largeur de contraintes dans le storyboard.
  • Imprimer votre contentSize au moment de l'exécution, voir si elle correspond à des valeurs que vous avez entrée. Le contentSize détermine combien de défilement se produit, de sorte que le problème avec votre première tentative est de faire avec contentSize.
  • ainsi, le "pure mise en forme automatique" approche n'est pas que pure après tout? Mais COMMENT puis-je régler l'contentSize manuellement? Comme je l'ai mentionné ci-dessus, je suis réglage de la hauteur/largeur de l'affichage du contenu à valeur fixe (dans le scénario). Mais ça défile trop loin (2x).
  • Je comprends que. Évidemment, si la contentsize est la bonne, il serait faire défiler correctement. Le problème que je suis en train de décrire est: comment définir la contentsize correctement? Apple TechNote semble contourner le problème en utilisant une imageview, ou alors il se sent. Je vais ouvrir une session le contentsize et de répondre ici peu de temps.
  • Pour définir manuellement le faire: scrollView.contentSize = CGSizeMake(THE_SIZE_OF_THE_CONTENT,self.scrollView.frame.size.height);
  • le contentsize est enregistrée en tant que double de celui que j'ai mis le contentview.la largeur. Depuis qu'il défile deux fois plus loin, c'est évident, je suppose. La question est, pourquoi ne le faites défiler deux fois plus loin si je définis la largeur de la contentview à la moitié de celui-ci?
  • Gène, cela ne fonctionne pas avec de la pure mise en page automatique, mais oui, c'est ce que j'ai utilisé pour l'approche mixte.
  • oui, mais vous avez demandé comment le configurer manuellement.
  • Vidéo tutoriel: youtube.com/watch?v=4oCWxHLBQ-A
  • La solution parfaite! --> "La solution pour obtenir le contenu de défilement a été de mettre le point à la contrainte à ZÉRO! Ce n'est pas évident lorsque l'on travaille dans le Storyboard
  • Je préfère la vieille question de titre.

InformationsquelleAutor user1459524 | 2013-11-26