2017-09-18 1 views
0

J'essaye de faire la taille de la cellule vue de la table = le contenu de la cellule.Swift: cellule dynamique dans la vue de table

I mis en œuvre ces 2 lignes dans le viewDidLoad():

tableView.estimatedRowHeight = 200.0 
tableView.rowHeight = UITableViewAutomaticDimension 

and here are the constraints in the cell

encore, la cellule est en train de changer sa hauteur!

+0

Que voulez-vous dire quand vous dites la cellule change de hauteur? –

+0

Je veux dire que la hauteur est trop petite et il se comporte comme si je n'avais pas ajouté ces 2 lignes. Le titre est la seule chose qui apparaît dans la cellule. – mahdi

Répondre

0

TextView ne développerai pas à adapter l'ensemble texte par défaut car il a des capacités de défilement, pour ce que vous voulez, vous devez désactiver le défilement dans le textView.

Sélectionnez le textView et dans l'onglet Attributs Inspecteur de défilement vers le bas et décochez la case « Scrolling Activé »

+0

excellent cela a fonctionné pour moi !! mais que faire pour une cellule qui a une image, parce que j'ai le même problème. – mahdi

+0

@mahdi Pour afficher une image en fonction de l'affichage de l'image, vous pouvez définir une contrainte de hauteur ou définir une contrainte de format. –

0

essayer d'utiliser heightForRowAt indexPath

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {return UITableViewAutomaticDimension} 

+

override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
+0

J'ai essayé ça et ça n'a pas marché. – mahdi

+0

ou essayez celui-ci pour remplacer func tableView (_tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension } –

0

Il me semble que votre problème peut être que la hauteur de la UITextView ne soit pas explicitement indiqué. Le comportement naturel de la vue de texte ne doit pas être grand comme son contenu.

Je suggère d'ajouter une contrainte de hauteur à l'intérieur constructeur d'interface, le brancher à une prise de courant, puis dans la fonction cellulaire layoutSubviews calculer la hauteur comme si:

@IBOutlet var textViewHeightConstraint: NSLayoutConstraint! 
func layoutSubviews() { 
    super.layoutSubviews() 
    let fixedWidth = textView.frame.size.width 
    textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
    let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
    textViewHeightConstraint.constant = newSize.height 
} 
0

Dans viewDidLoad

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 200 

Et mettre votre à la fois label Titre et Label texte (remplacez texte) dans un UIView. et donner des contraintes à UIView
1. fuite, ce qui, en bas et dans l'espace top zéro
2. donner fixe 200 et Hight changement par rapport supérieure ou égale (> =)

Ensuite, donnez contraint à Titre label
1. de suivi, de premier plan et espace supérieur à zéro
2. donner fixé Hight 20 (votre choix)

à Give label contraint texte
1. fuite, ce qui, Botto m et espace supérieur à zéro
2. donner fixes Hight 180 et en relation avec changement de préférence supérieure ou égale (> =)