Comment redimensionner une UIView et la force de ses sous-vues pour redimensionner

J'ai un UIScrollView avec un UIView comme une sous-vue. Le UIView a un tas de champs de saisie de données disposées verticalement - essentiellement juste un format fixe Formulaire de saisie de données.

Je veux garder la UIView's taille verticale et ajuster sa taille horizontale en fonction de la taille de la UIScrollView qui varie en fonction de l'orientation de l'appareil. À noter que c'est dans la vue de Détail d'un UISplitViewController.

De sorte que l'utilisateur aura à faire défiler verticalement, mais pas horizontalement comme tous les champs de texte sur la UIView devrait redimensionnées pour s'adapter à l'horizontale sur l'écran.

Actuellement si je redimensionner la UIView en changeant la largeur de cadre pour correspondre à la UIScrollView's largeur du châssis, puis le UIView des sous-vues (les champs de texte) ne pas redimensionner eux-mêmes en fonction des contraintes d'installation de l'IB. Le UIView semble juste pour être coupés. Il n'y a pas de défilement horizontal de sorte que cet aspect fonctionne correctement.

J'ai autoresize ensemble des sous-vues sur UIView et sur UIScrollView.

Des conseils sur les choses à faire ici ? Aussi où dois-je mettre le code pour redimensionner la UIView si l'appareil changements d'orientation de l' ?

Des informations supplémentaires.

J'ai créé le UIView de l'IB comme une vue séparée de la même PLUME que le DetailViewController contenant le UIScrollView. Parce qu'il est beaucoup plus grand que le UIScrollView la seule façon que je peux trouver pour cela la création de l'IB est si je l'ai configuré comme une vue séparée de la hauteur et la largeur. J'ai ensuite créer un IBOutlet et ajouter ce point de vue comme une sous-vue de UIScrollView dans le viewDidLoad méthode. Tout cela semble fonctionner à trouver avec les points de vue de tous les afficher correctement, à l'exception de la UIView des sous-vues ne sont pas redimensionnées à l'horizontale.

Toutes les suggestions sur ce que j'ai fait de mal ici?

  • Quelles sont les contraintes d'installation? Cela devrait être faisable avec juste la mise en page automatique.
  • Vous pense, mais clairement, je suis en manque de quelque chose. Comme Rakesh ci-dessous souligne les contraintes entre UISCrollView et UIView (son sous-vue) ne sont pas d'installation car UIView n'est pas à l'intérieur de UIScrollView de l'IB. J'ai pensé que je pourrais juste redimensionner la UIView par l'évolution de son cadre pour correspondre à la largeur de la UIScrollView mais la UIView ne pas redimensionner ses sous-vues si j'utilise simplement UIView.frame = newFrame.
  • Peut-être que j'ai besoin de désactiver l'auto-mise en page que par Rakesh' commentaire ci-dessous. Je vais essayer ces suggestions et vous laisser savoir comment je vais.
  • Rakesh et moi , les deux sont la même personne. 😀 de toute façon au lieu de définir le cadre manuellement (si vous allez de cette façon, vous devez utiliser le layoutSubviews à la position de la sous-vues aussi), pourquoi ne pas vous fixer le UIView également à l'aide de contraintes (par programmation) ou simplement utiliser des le autre façon que je l'ai mentionné dans la réponse?
  • J'ai mis à jour la réponse à une autre option aussi. Check it out.
  • OK j'ai eu travaille maintenant. J'ai tourné de mise en page automatique et un peu tout gâché parce qu'il faut tous être positionnée - c'est trop de travail. De le rallumer ensuite, j'ai trouvé que toutes les contraintes ont été supprimées. J'ai donc commencé par adjonction, à la viewDidLoad [self.le scrollView addSubview:auto.contentView]; self.le scrollView.contentSize = auto.contentView.cadre.taille; auto.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth; auto.contentView.autoresizesSubviews = OUI;