Dynamique UIView hauteur avec mise en page automatique dans iOS 6
Pour le dernier couple de jours, je suis en train d'accomplir un assez simple (du moins il devrait l'être) mise en page à l'aide de auto contraintes de mise en forme, mais sans succès.
Mon point de vue de la hiérarchie est:
UIScrollView
-- UIView (Conteneur affichage)
-----UILabel (Multirow étiquette)
-----UIWebView
-----UILabel
-----UIButton
Souhaité fonctionnalités est le Conteneur de vue à l'expansion en fonction de la taille du contenu. Afin d'augmenter la hauteur de la UIWebView j'utilise le code suivant:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[self.webView sizeToFit];
}
J'ai essayé beaucoup de différentes contraintes, avec la plus raisonnable étant:
1. Broche en haut de l'espace de superview pour la 1ère étiquette (Titre de l'Évènement)
2. Pin espacement vertical pour le 1er de l'étiquette et de la UIWebView
3. Pin espacement vertical pour le reste des éléments (c'est à dire UIWebView - UILabel (Date de l'Événement) et UILabel (Date de l'Événement) - UIButton)
4. Le conteneur de vue a une faible priorité (1) en bas, à la verticale de l'espace de contrainte avec son superview
Le résultat que j'obtiens est le suivant:
La UIWebView se développe, mais ne repousse pas la date de l'événement de l'étiquette et sur le bouton, plus le Conteneur de vue ne s'étend pas non plus.
Toute aide serait grandement appréciée.
Vous pouvez télécharger l'échantillon Xcode projet à partir d'ici.
Vous devez vous connecter pour publier un commentaire.
Vous êtes réglage de la hauteur de la contrainte de votre webView que 266. C'est pourquoi la hauteur de la vue web est toujours fixe.
Vous pouvez créer cette hauteur contrainte comme un IBOutlet, par exemple:
Et ensuite vous pouvez modifier la constante de la hauteur de la contrainte lors de l'affichage web a fini de télécharger le contenu. La vue web lui-même se compose de défilement de l'affichage à l'intérieur, donc si vous voulez pour obtenir la hauteur totale du contenu:
Ou apparemment ce qui fonctionne:
Label
dans unContent View
dans unScroll View
dans le "principal"View
et je fais comme vous dites, je mis la contrainte à lalabel.frame.size.height
mais cela ne fonctionne pas. Comme je comprends lacontentSize
doit "pousser" automatiquement.Code ici: loessl.org/~hashier/relpub_2/DynLabel.zip[self.webViewSummary setDelegate:self];
et dans le .h fichier@interface dphDetailsViewController : UIViewController <UIWebViewDelegate>
donc je n'ai pas besoin d'écrire une nouvelle classe juste pour redimensionner la webview.Vous pourriez avoir besoin d'un délai avant la mise à jour de webview de la taille du contenu. Et maçonnerie est utile pour la mise en page automatique utilisation.