UIScrollView ne défilera pas!
De l'IB, j'ai mon UIView. Ensuite, j'ai un sous-UIView avec un UIScrollView comme un sous vue. Puis le UIScrollView a un sous-UIImageView. Le UIScrollView et UIImageView sont de la même taille. Ils sont beaucoup plus gros que le UIView dont ils sont les sous-vues. J'ai supposé que cela ferait de défilement. Il n'a pas. Est une sorte de code requis pour faire défiler les vues de travail?
source d'informationauteur Marty
Vous devez vous connecter pour publier un commentaire.
Vous devez définir
UIScrollView.contentSize
pour correspondre au total de défilement de la taille, qui est votre sous-vue taille de l'image dans ce cas.Comme mentionné dans l'acceptation de réponse, vous devez définir la
UIScrollView
'scontentSize
propriété.Cela peut être fait dans Interface Builder.
Créer et d'exécuter des et votre de défilement de la vue de défilement.
Le contenu de l'encart n'affecte pas la vitesse de défilement. Voir Quelle est la UIScrollView contentInset propriété?
Pour faire défiler, vous devez faire la scrollview cadre plus petit que son contenu, le contenu de l'image ou de la vue.
Cela peut être évident pour la plupart, mais j'ai passé les âges demandais pourquoi mon UIScrollView ne serait pas de défilement donc je poste ce qui m'arrêtait dans le cas où il peut aider n'importe qui d'autre:
La UIScrollView doit être de taille de la zone visible dans lequel vous souhaitez qu'il soit, et non pas la taille de son contenu.
Ridicule, en mon nom, je le sais, mais juste au cas où il aide quelqu'un.
J'ai mis tout le contenu de ma scrollview de l'IB. (les boutons, les étiquettes, les champs de texte, etc). La taille totale est de 500 de haut.
J'ai ensuite redimensionnée à 436 haut de l'IB.
Ensuite dans le code, j'ai mis c'est viewDidLoad:
De sorte que les feuilles 64 pixels que je peux faire défiler. Il fonctionne parfaitement.
J'ai aussi placé "UIScrollViewDelegate" dans le <> les accolades de @interface pour mon .h fichier et attaché le délégué à la sortie de la scrollview à propriétaire du Fichier de l'IB.
plus, avez-vous activer le défilement?
regarder la propriété
Scroll view fonctionne avec ceci:
Cadre
puis
contentSize
points de vue ou des objets etc...
Si votre image est réglée sur votre la taille du contenu, il n'y aura pas de défilement.
Afin de définir votre image ( IB panneau droit -> en second lieu le dernier onglet "Taille " Inspecteur") à la longueur de votre application ( dans mon cas, c'est de 367 des que j'ai une barre de navigation et la barre d'onglets), puis par programmation à l'ensemble de la contentSize à - ouais, vous l'aurez deviné ... plus de votre image de sorte qu'il peut les faire défiler.
Des jours heureux!!
L'autre chose la plus importante que je ne vois pas mentionné ici, c'est que UIScrollView ne joue pas bien avec mise en page automatique. Si il semble que vous avez tout fait correctement, vérifiez si votre ViewController a mise en page automatique activée et, le cas échéant, éteignez-le.
(À chaque fois que vous faites défiler les vues sont ré-agencées. Gak!)
Donc:
contentSize
est plus grand que sonframe.size
AutoLayout
pour le ViewController est éteint.Je voudrais ajouter la raison pour laquelle mon scrollview n'était pas le défilement aujourd'hui. J'ai ajouté tous mes sous-vues correctement dans le code. J'ai mis le contentSize correctement. Interaction de l'utilisateur a été activé.
Mon problème était dans Interface Builder. J'avais placé un UIButton comme une sous-vue de mon UIScrollView. Ce bouton était à l'origine de la scrollview de ne pas défiler. Une fois que j'ai enlevé le bouton de l'Interface Builder et traitées dans le code, mon scrollview a commencé à défiler.
Donc là vous allez. Il y a une autre chose à vérifier lorsque l'on essaie de comprendre pourquoi il n'est pas de défilement. Vérifier Interface Builder pour les sous-vues.