J'essaie de créer layout
à l'intérieur de scrollview
à l'aide de ce tutoriel https://www.youtube.com/watch?v=UnQsFlMGDsI
Et obtenez le résultat suivant http://youtu.be/iPfzyLbEZMA
Il sera apprécié pour des conseils ou des liens de tutoriel. Il suffit de faire défiler verticalement
Je suis sûr qu'il doit y avoir d'autres moyens de le faire, mais voici une solution rapide:
1.) Créez une contrainte de largeur sur ContentView dans Storyborad.
2.) IBOutlet that widthContraint et définissez sa valeur sur la largeur du cadre de vue dans viewDidLoad.
Supposons que le nom de la sortie de contrainte est contentViewWidthContraint.
contentViewWidthContraint.constant = self.view.bounds.size.width;
Une autre alternative à partir de Storyboard consiste à fixer la largeur de Contentview à la largeur de la vue à partir du storyboard ou à Scrollview, si Scrollview a déjà une contrainte Egal width avec superview. Ajoutez la contrainte "Equal Width" de Contentview à self.view ou à Scrollview (si scrollview a déjà la contrainte de largeur)
Avez-vous configuré la largeur "ContentView" pour qu'elle corresponde à la largeur de la vue de défilement? J'ai eu le même problème et j'ai corrigé avec " Equal Widths ".
" Equal Widths " indiquera à votre "ContentView" d'utiliser la même largeur que la "Vue défilement", ce qui devrait correspondre à l'écran si vous avez correctement configuré la contrainte.
Vous pouvez le faire facilement sur le storyboard.
Relâchez le clic, vous serez invité avec un menu, sélectionnez " Equal Widths ".
Cela devrait résoudre votre problème en utilisant le scrollview avec AutoLayout de l’éditeur Storyboard.
Vous pouvez trouver un tutoriel complet sur l'utilisation de ScrollView avec Autolayout et Storyboard ici .
J'espère que cela vous sera utile :)
Dans le Storyboard, définissez la largeur des éléments contenus dans votre UIScrollView égale à celle de cet UIScrollView (en sélectionnant tous les éléments et le maintien UIScrollView dans le panneau situé à gauche de votre Storyboard, puis en définissant la contrainte 'Equal Widths' sous 'en bas de votre Storyboard). Simplement épingler les côtés droits des éléments à celui de UIScrollView ne fonctionnera pas car il ajustera la taille de sa "vue d'affichage" à la largeur du plus grand élément et si celle-ci est inférieure à la largeur de UIScrollView, tous les éléments semble juste aligné sur son côté gauche.
Essayez de régler sa largeur sur 0 et sa hauteur égale à la taille du contenu, comme ceci:
self.scrollView.contentSize = CGSizeMake(0, self.scrollView.contentSize.height);
Cela fonctionnera comme vous voulez. Essayez-le et dites-le s'il fait encore face à un problème.
Pour désactiver le défilement horizontal, vous pouvez définir la taille du contenu dans la méthode -(void)scrollViewDidScroll
.
[self.scrollView setContentOffset: CGPointMake(0, self.scrollView.contentOffset.y)];
self.scrollView.directionalLockEnabled = YES;
Trop définir les contraintes UIScrollView
comme le code ci-dessous pour qu’il occupe tout l’écran. Ne pas dépasser la taille de l’écran.
Leading Space = 0 from mainView
Top Space = 0 from mainView
Bottom Space = 0 from mainView
Trailing Space = 0 from mainView
En effet, la vue de défilement n'a aucune idée de la fin de votre contenu.
Mais quand au moins un élément de votre vue de défilement a sa contrainte "espace de fin" attachée à une vue en dehors de la vue de défilement (généralement une vue dans laquelle la vue de défilement est assise ou une autre vue d'un niveau supérieur, qui "connaît" sa largeur ) - la vue de défilement aura automatiquement une idée de la largeur souhaitée et ne défilera pas horizontalement (sauf si cette contrainte de fin implique que votre contenu se trouve en dehors de l’écran).
Il est préférable que tous les éléments de la vue de défilement aient leurs contraintes «d'espace de fin» connectées les unes aux autres ou à une vue en dehors de la vue de défilement. Mais pas la vue de défilement elle-même.
Aucun code supplémentaire ni contrainte supplémentaire nécessaire pour que cela fonctionne.
Vous devez définir la largeur de UIScrollView égale ou inférieure à la largeur de votre vue parente. Deux façons de le faire:
1) Vous pouvez le faire dans Storyboard via des contraintes de présentation
2) Vous pouvez le faire par programme:
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.contentSize.height);