95 votes

Comment utiliser UIScrollView dans Interface Builder ?

Alors que j'ai utilisé UIScrollView avec succès dans le passé par la manipulation par programmation, j'ai du mal à la faire fonctionner en le définissant exclusivement dans Interface Builder.

J'ai une simple page "à propos" dans mon iPhone. Il a un UITextView, des icônes et des liens vers mes autres applications. J'ai ajouté tous ces points de vue à mon UIScrollView, les disposer de sorte que leur taille totale est > 480. Lorsque je lance mon application, la scrollview affiche uniquement le contenu sur l'écran, et rien ne défile.

Est-il possible de le faire entièrement par l'IB, ou dois-je manipuler les contentSize via le code?

130voto

St3fan Points 16196

Vous avez oublié de définir la propriété contentSize de la UIScrollView. Curieusement vous ne pouvez pas faire cela d’Interface Builder. Vous devrez le faire à partir du contrôleur de vue gérer cet affichage à défilement.

113voto

Herr Grumps Points 1238

Boby_Wan réponse m'a fait réfléchir, et j'ai trouvé la solution suivante pour configurer le UIScrollView de contentSize à partir de l'Interface Builder:

  1. Sélectionnez l' UIScrollView dans le scénario de la scène
  2. Aller à l' Identité de l'inspecteur, de créer un nouvel Utilisateur Défini Exécution d'Attribut (cliquez sur le bouton+)
  3. Modifier l'attribut Clé de Chemin de contentSize
  4. Modifier l'attribut Type d' Size
  5. Maintenant, définissez la Valeur de {contenu souhaité largeur, contenu, hauteur}

par exemple le réglage de la valeur de {320, 920} permettront à l'utilisateur de faire défiler un ensemble supplémentaire de l'écran sur l'iPhone.

(Je suis en utilisant xcode 4.3.3, le projet de l' iOS Cible de Déploiement est de 5.1)

Quand j'ai fait ce que j'ai reçu le message d'erreur suivant:

Illégal De Configuration:
Taille type défini par l'utilisateur runtime attributs avec Xcode versions antérieures à la 4.3
MainStoryboard.storyboard

Si vous aussi, vous obtenez cette erreur, il est simple à corriger: sélectionnez le Storyboard dans le Navigateur de Projets, et mettre le Fichier inspecteur. Trouver/développer l' Interface du Générateur de Document de la section, et il y a une liste déroulante pour le Développement. S'assurer que c'est réglé Xcode 4.3

25voto

Danyal Aytekin Points 2018

Avec la mise en forme automatique (iOS6 +), vous pouvez éviter le paramètre `` . Définissez plutôt les contraintes suivantes :

  1. Épingler le haut de la scrollview vers le haut de son enfant plus haut.
  2. Et épingler le bas au fond de ses enfants plus en bas.

18voto

Anton Banchev Points 404

Vous pouvez faire en utilisant seulement de Interface Builder, aller à l’inspecteur de l’identité (le troisième onglet inspecteur) et ajoutez un attribut Utilisateur nouveau temps d’exécution défini avec

  • Chemin d’accès de la clé : contentSize
  • Type : Taille
  • Valeur : {largeur, hauteur}

14voto

Boby_Wan Points 309

Il est maintenant possible de faire un UIScrollView de défilement, sans laisser de Storyboard:

  1. Sélectionnez l' UIScrollView dans le Storyboard, allez à la Taille inspecteur et de changer le Bas de la valeur (ou tout autre valeur vous avez besoin de changer) dans le Contenu des Encarts de la section.
  2. Maintenant, allez à l' Identité de l'inspecteur et de créer un nouvel Utilisateur Défini Exécution de l'Attribut (en cliquant sur le bouton+) et nommez - contentSize. Il n'a pas d'importance quel Type ou la Valeur que vous remplissez (vous pouvez même quitter leur valeur par défaut).

Cela va rendre l' UIScrollView fonctionner correctement, même si je ne sais pas pourquoi la deuxième étape est nécessaire (j'ai découvert par hasard). :(

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X