2016-03-20 11 views
0

Ich habe einen TableView mit mehreren customCells und kann daher estimatedRowHeight nicht verwenden. In dieser Zelle muss die Zeilenhöhe jedoch gleich dem Inhalt der Beschriftung innerhalb der Zelle sein. Es scheint jedoch nicht den ganzen Text zu zeigen.Höhe der Zelle gleich dem Inhalt des Etiketts einstellen

ich angefangen habe, indem cosntraints

enter image description here

Dann in Zelle Unterklasse gesetzt i Schrifthöhe

descLabel!.font = UIFont.systemFontOfSize(14) 

Dann i die Berechnung func

func calculateHeightForString(inString:String) -> CGFloat 
{ 
    let messageString = inString 
    let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.lineSpacing = 2 
    let attributes = [NSFontAttributeName: UIFont.systemFontOfSize(14.0)] 

    let attrString:NSMutableAttributedString? = NSMutableAttributedString(string: messageString, attributes: attributes) 
    attrString!.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString!.length)) 
    let rect:CGRect = attrString!.boundingRectWithSize(CGSizeMake(self.view.frame.width-24,CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, context:nil)//hear u will get nearer height not the exact value 
    let requredSize:CGRect = rect 


    return requredSize.height //to include button's in your tableview 

} 

einstellen erstellen Höhe für Abschnitt 1

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    if indexPath.section == 0 { 

     return 160.0/320.0 * tableView.bounds.width 
    } else if indexPath.section == 1 { 
     return self.calculateHeightForString("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also th") + 24 
    } else { 
     return 100 
    } 
} 

Ergebnis, wo es nicht alles

enter image description here

+0

Überprüfen Sie, wie groß die Zellenhöhe für 1 Liner ist. Wenn es das gleiche wie oben ist, scheint die Einschränkung falsch zu sein. –

Antwort

0

nicht zeigen, wenn Sie Setup Ihre Einschränkungen richtig haben und Bereitstellung des Ziels Ihrer App ist> = iOS 8 die automatische Zeilenhöhe Berechnung verwenden können. deshalb haben Sie die folgenden in viewDidLoad zu tun:

tableView.estimatedRowHeight = 44 
tableView.rowHeight = UITableViewAutomaticDimension 

wo sollte eine Art Durchschnitt rowHeight sein. dann haben Sie nicht über die Methoden estimatedRowHeight und heightForRow überhaupt ...

Sie auch heightForRow und so etwas wie die folgenden tun implementieren können zu implementieren:

// if cell is of kind textview cell 
return UITableViewAutomaticDimension 
// else 
return some static value 
+0

Nun, wie ich erwähnte, scheint es nicht in meinem Fall zu arbeiten, da ich mehrere Zellenunterklassen habe, wo Ruhe statische Höhen ist –

+0

in diesem Fall können ** Sie implementieren 'heightForRow' und automatische Dimension für Zellen der Art _textviewcell_ zurückgeben .. . –

0

Von Ihrem String es sieht aus wie im letzten Zeile fehlt . Dies kann auf eine negative Beschränkung auf den Boden zurückzuführen sein (zeigt -4 im angehängten Bild). Versuchen Sie es zu etwas Positivem zu ändern.

Verwandte Themen