Le problème est, que j'ai une vue contenant 3 parties.Redimensionner UIView pour adapter son contenu
La première partie est un en-tête simple - toujours la même hauteur! La deuxième partie est une ligne de description simple - toujours la même hauteur!
Maintenant, le problème est la troisième partie. C'est un viewContainer pour les sous-vues calculées dynamiquement (chacune d'elles ayant un contrôleur personnalisé). La hauteur du contenu est dynamique causée par certaines informations textuelles téléchargées à partir d'un backend. Donc parfois je devrais faire défiler pour pouvoir lire tout le texte, parfois non.
Actuellement, je fais de cette façon:
- Calculer la taille de la UILabel pour un texte spécifique.
- Ensuite, redimensionnez la vue parente de manière à adapter le UILabel (s'il est plus petit).
- Puis redimensionnez le scrollView de mon 3-Part-ViewController-View pour s'adapter à ses sous-vues.
Le viewController détail du contenu dynamique:
self.labelDescription.text = self.customData.descriptionText;
[self.labelDescription sizeToFit];
if(self.view.frame.size.height < (self.labelDescription.frame.size.height + self.labelDescription.frame.origin.y)) {
CGRect newSize = CGRectMake(0,
0,
self.view.frame.size.width,
self.labelDescription.frame.size.height +
self.labelDescription.frame.origin.y);
self.view.frame = newSize;
}
Le changement de taille de la vue de défilement après l'ajout et le redimensionnement de mon vue détaillée:
[self addChildViewController:controllerCustomData];
[self.scrollView addSubview:controllerCustomData.view];
CGRect newRect = CGRectMake(0,
self.viewElementDetailContentContainer.frame.origin.y,
controllerCustomData.view.frame.size.width,
controllerCustomData.view.frame.size.height);
controllerCustomData.view.frame = newRect;
self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, newRect.origin.y + newRect.size.height);
Donc ma question est, est-il plus facile façons de le faire?