2017-06-26 4 views
1

Dans mon application, j'ai une vue de table avec une image, une étiquette et une vue de texte dans chaque cellule. Je voudrais pouvoir redimensionner automatiquement les cellules en fonction de la quantité de contenu dans la vue de texte. (La vue de texte est le texte le plus bas.)Swift, Redimensionnement automatique Cellules de vue de table personnalisées

Jusqu'ici, j'ai ajouté les contraintes correctes; précédant, suivant, en haut et en bas de la vue de texte et désactivant le défilement et l'édition.

Dans mon fichier tableViewController.swift, j'ai écrit ce code:

override func viewWillAppear(_ animated: Bool) { tableView.estimatedRowHeight = 100 tableView.rowHeight = UITableViewAutomaticDimension }

Toutefois, cela ne fonctionne pas comme quand j'ajouter du texte à la vue du texte, il coupe juste à côté.

Peut-être que cela a quelque chose à voir avec la carte comme look, j'ai un UIView dans chaque cellule agissant comme une carte.

Honnêtement, je ne sais pas ce que je fais mal

Une image ci-dessous de ce que mon application ressemble et si quelqu'un pouvait aider ce serait grandement apprécié

enter image description here

+0

Avez-vous réglé le mode de contenu à l'échelle 'Pour Fill' dans le Générateur d'interface pour votre' UITextView' – Barns

+0

J'ai trouvé cette auto redimensionne dur à utiliser si j'ai plus d'un textView à l'intérieur et je fais toujours le calcul de hauteur par moi-même. –

+0

Je suis curieux de savoir comment vous avez créé ces espaces entre les cellules et la forme arrondie. –

Répondre

3

Vérifiez si vos contraintes sont comme ça (en fonction de votre image):

imageView: set en haut et en tête de votre conteneur, avec une hauteur fixe et les valeurs de largeur. Label: vous pouvez le définir en haut et en horizontal de votre image, avec une hauteur et une largeur fixes. TextView: conduisant à l'image, l'espace supérieur à l'étiquette, le suivi et le fond au conteneur.

et continuer à utiliser

tableView.estimatedRowHeight = 100 
     tableView.rowHeight = UITableViewAutomaticDimension 

dans votre viewWillAppear()

0

Assurez-vous que le mode de contenu est défini sur Scale To Fill de votre UITextView Assurez-vous qu'il n'y a pas de contraintes de hauteur pour la UITextView et la carte UIView

Essayez d'ajouter la hauteur estimée en viewDidLoad:

override func viewDidLoad() { 
    tableView.estimatedRowHeight = 100 
    tableView.rowHeight = UITableViewAutomaticDimension 
} 

Peut-être que le AutoHeight ne fonctionne pas à cause de la UIView au-dessus du UITextView. Essayez d'appeler les sizeToFit et layoutIfNeeded méthodes de UIView dans le cellForRowAt:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
let cell = tableView.dequeueReusableCell(withIdentifier: "Identifier", for: indexPath) as! CustomTableViewCell 
cell.vwCard.sizeToFit() 
cell.vwCard.layoutIfNeeded() 
return cell 
} 

Vous pouvez également essayer le sizeToFit et layoutIfNeeded aussi bien pour la UITextView.

espère que cela fonctionne ..

+0

J'ai essayé tout ce qui précède et même essayé de supprimer la vue de la carte d'arrière-plan, mais cela ne fonctionne toujours pas. D'autres idées? vraiment désolé @ Abadii176 –

+0

Quelle est la cible de déploiement de votre application et quelle version iOS exécute votre simulateur? Le déploiement est – Abadii176

+0

10.0 et sim est 10.3.1 –