web-dev-qa-db-fra.com

Swift: aligner le texte UILabel en haut plutôt au milieu

Je veux que UILabel démarre par le haut même si le texte est court, il semble que NSTextAlignment ne fonctionne pas

enter image description here

cell.textContent.text = comments[indexPath.row]
cell.textContent.textAlignment = 




func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    //post's section == 0

    if indexPath.section == 0 {
        let cell = tableView.dequeueReusableCellWithIdentifier("postCID", forIndexPath: indexPath) as! postCell
        cell.usernameLabel.text = "Steve Paul Jobs"
         cell.time.text = "9:42 PM"
         cell.commentsLabelCount.text = "12 Comments"
         cell.textContent.text = "Return the number of rows in the sectioReturn the number of rows in the sectioReturn the number of rows in the sectioReturn the number of rows in the sectioReturn the number of rows in the sectioReturn the number of rows in the sectio"

        cell.layoutSubviews()

    }

        let cell = tableView.dequeueReusableCellWithIdentifier("commentCID", forIndexPath: indexPath) as! commentCell
        // Configure the cell...
      cell.layoutSubviews()

    cell.usernameLabel.text = "Steve Paul Jobs"
    cell.time.text = "9:42 PM"
    cell.textContent.text = comments[indexPath.row]
     cell.textContent.textAlignment = NSTextAlignment.Left


        return cell



}


import UIKit

class commentCell: UITableViewCell {
    @IBOutlet weak var textContent: UILabel!
    @IBOutlet weak var time: UILabel!
    @IBOutlet weak var userImage: UIImageView!
    @IBOutlet weak var usernameLabel: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    userImage.layer.cornerRadius = 2
    userImage.clipsToBounds = true

}
override func layoutSubviews() {
    super.layoutSubviews()
    textContent.sizeToFit()
}
9
James Moriarty

Dans votre classe UITableViewCell personnalisée, ajoutez ceci:

override func layoutSubviews() {
    super.layoutSubviews()
    textContent.sizeToFit()
}

Voici un lien vers un exemple de projet au cas où vous souhaitez référencer la configuration de la cellule et du tableau: https://mega.nz/#!ZoZCgTaA!7gvkRw4pwecMfDXrNW_7jR2dKe2UR9jPsq9tp_CRIc

12
Caleb

L'utilisation de la mise en page automatique dans Storyboard sera très simple:

enter image description here

et

label.numberOfLines = 0;
50
isaced

Cela peut facilement être fait avec la mise en page automatique. Assurez-vous que votre étiquette de texte est dans la vue correcte.

  1. Assurez-vous que le nombre de lignes de votre étiquette de texte est défini sur 0

number of lines is zero

  1. Sélectionnez votre étiquette de texte et épinglez les contraintes supérieure, gauche et droite. Appuyez sur le bouton "Ajouter 3 contraintes" en bas.

enter image description here

  1. Mettez à jour vos cadres (pour voir l'alignement mis à jour dans le storyboard).

enter image description here

6
David T

Dans votre classe UITableViewCell personnalisée, ajoutez ceci:

override func layoutSubviews() {
    super.layoutSubviews()
    self.contentView.layoutIfNeeded() //This is the solution for :changed only after I tap the each cell
    textContent.sizeToFit()
}
6
Zeesha