Comment configurer UIScrollView dans Interface Builder avec des éléments en dehors de l'interface utilisateur de la vue principale iPhone?

StackOverflow https://stackoverflow.com/questions/3458937

Question

Je construis un formulaire de saisie de données dans mon application iPhone, et il y a plus de champs de données que l'affichage sur l'écran. Je me suis dit que je devrais les mettre dans un UIScrollView afin que l'utilisateur peut faire défiler le formulaire. Quelle est la meilleure façon de construire ce dans Interface Builder? Je sais que je peux le faire par programme, mais je voudrais le faire dans Interface Builder si je peux. Le problème est, Comment puis-je disposer UILabels, UITextFields, etc. si elles se situent en dehors de l'écran principal de l'iPhone - dans la partie de l'écran pour lequel le UIScrollView devient utile

Était-ce utile?

La solution

Double-cliquez pour ouvrir le UIScrollView lui-même dans IB, et d'augmenter la taille de la taille dont vous avez besoin ou plus (vous pouvez toujours réduire à l'exécution). Ensuite, il suffit d'ajouter les éléments.

EDIT: Ne fonctionne pas -. Voir à la place

Autres conseils

La meilleure solution que je trouve pour ce problème (que je considère comme gênant pour Interface Builder) est la suivante:

  1. place un « conteneur » UIView à l'intérieur du UIScrollView, définissez la taille du conteneur UIView à ce qui est nécessaire (par exemple 320 x 1200) avec l'inspecteur et ajoutez votre contenu dans ce point de vue du conteneur. (Vos boutons, textfields, etc).
  2. définir la contentSize pour le UIScrollView, dans le code, être la même que la taille de votre récipient UIView. quelque part dans viewDidLoad par exemple (par exemple scrollView.contentSize = containerView.frame.size;)
  3. Pour modifier le contenu au-delà des limites de l'ScrollView dans Interface Builder, vous devez faire glisser votre vue conteneur extérieur du rouleau voir chaque fois, effectuez vos modifications, puis faites glisser votre vue conteneur à l'intérieur du UIScrollView et la construction.

Ceci est en fait simple:

  1. Créer une nouvelle classe de contrôleur de vue par exemple MyScrollViewController

  2. Créer une nouvelle xib avec UIScrollView que la vue supérieure, et de définir la classe du propriétaire au contrôleur MyScrollView

  3. du fichier
  4. Définir l'attribut de vue du propriétaire du fichier à la vue de défilement

  5. glisser le fond de la scrollview pour créer la taille désirée.

  6. Placez vos divers autres éléments de l'interface utilisateur en tant que sous-vues de la vue de défilement

  7. Créer et connecter un IBOutlet à MyScrollViewController.h pour la vue de défilement, par exemple.

    @property (retain, nonatomic) IBOutlet UIScrollView *scrollView;
    
  8. Dans la méthode viewDidLoad MyScrollViewController, ajoutez la ligne de code suivante:

    self.scrollView.contentSize = self.scrollView.frame.size;
    

Th-e-e qui est tout!

Configurer « contenu » Médaillons de « défilement Taille maximale » sur le « inspecteur de la taille »: Bottom = YourFrameHeight - ScreenHeigth. Il vous permettra de faire défiler dans des gammes de haut en haut, en bas à fond de votre UIScrollView

J'ai eu le même problème aussi. Ce que je fini par faire était de mettre un autre à l'intérieur de UIView et de réglage de la hauteur de ce que je voulais. Ensuite, je mets tous mes éléments de l'interface utilisateur à l'intérieur de celui-ci. Cela vous permet de faire glisser la vue intérieure de haut en bas.

Ce qui a fonctionné pour moi dans xCode5 (pas story-board, en utilisant autolayout) utilise la réponse 7 étapes au-dessus des extrémités avec « Th-e-e qui est tout! » et en ajoutant deux étapes.

8) Faites glisser un nouveau UIView pour le constructeur d'interface. Pas dans la vue de défilement. Juste lui-même. Mettez tous vos contrôles / vue sur cela et le rendre aussi grand que vous voulez. J'accroché ce point de vue comme contentView.

@property (faible, nonatomic) IBOutlet UIView * contentView;

9) Puis, en - (void) viewDidLoad

[self.mainScrollView addSubview: self.contentView];     [Self.mainScrollView setContentSize: CGSizeMake (self.contentView.frame.size.width, self.contentView.frame.size.height)];

Il suffit de dire qui a fait fonctionner pour moi.

Il y a enfin une solution raisonnable à tout cela et qui est de placer un récipient à l'intérieur Voir la UIScrollView. Comme Interface Builder affiche le UIViewController dans la vue Container séparément, vous pouvez enfin voir ce contenu de votre UIScrollView va ressembler sans croiser les doigts et debout sur la tête.

Vous devez toujours définir par programme la taille du contenu, mais au moins vous pouvez maintenant visualiser ce qu'il se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top