2016-07-14 5 views
1

Ich versuche, Zeilenhöhe programmgesteuert in Tabelle in UITableViewController zu ändern. Ich versuchte diesesWie ändert man automatisch die Zeilenhöhe in der Tabelle in UITableViewController in swift 2?

class MyProfile: UITableViewController { 

    var details:[String] = ["collection","of","titles","are","written","here"] 
    var subdetails:[String] = ["it", "is","a" ,"big", "string", "list"] 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tableView.rowHeight = UITableViewAutomaticDimension 
     self.tableView.estimatedRowHeight = 88.0 
     tableView.tableFooterView = UIView() 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return details.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let reuseIdentifier = "eachCellProfile" 
     var cell:UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier) as UITableViewCell? 
     if (cell != nil) { 
      cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: reuseIdentifier) 
     } 
     cell!.detailTextLabel?.font = UIFont.boldSystemFontOfSize(16.0) 
     cell?.detailTextLabel?.numberOfLines = 10 

     cell!.textLabel?.text = self.details[indexPath.row] 
     cell!.detailTextLabel?.text = self.subdetails[indexPath.row] 
     return cell! 
    } 

    override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 
} 

ich fügte keine Beschränkung in der Tabellenzelle hinzu. Ich möchte Zeilenhöhe nach Titel und Titel Details Zeichenfolge Länge und Schriftgröße einstellen. wie kann ich es tun?

+0

Für dynamische Höhe müssen Sie sicherstellen, dass eine vollständige oben nach unten Einschränkung festgelegt ist. Hast du diese schon? – Happiehappie

+0

nein, ich habe nicht festgelegt. –

+0

Probieren Sie sie zuerst, sonst weiß Ihr Betriebssystem nicht, wie UITableViewAutomaticDimension zu berechnen ist – Happiehappie

Antwort

3

Verwenden Sie die heightForRowAtIndexPath, um die Höhe jeder Zelle zu berechnen, bevor sie erstellt wird. Verwenden Sie die Titeldetailzeichenfolge, die Sie verwenden werden, um die Höhe zu finden und sie zu einer Standardhöhe hinzuzufügen. In meinem Fall der Zelle meine Standardhöhe beträgt 85 und die Schriftgröße ist 15.

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

if (dataArray.count > 0) { 
    let stringData = dataArray[indexPath.row] as NSString 
    let constraintRect = CGSize(width: 280.0, height: CGFloat.max) 
    //get height of the string used 
    let boundingBox = stringData.boundingRectWithSize(constraintRect, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont.systemFontOfSize(15.0)], context: nil) 
     return boundingBox.height + CGFloat(85.0) 
    } 
    else{ 
     returnValue = CGFloat(85.0); 
    } 
    return returnValue; 
} 

Dies gab mir dynamische Zellenhöhe nach ihrem Inhalt. Hoffe, das hilft

+0

danke @manjul es funktioniert gut ... –

+0

Es wäre nett, wenn Sie die Antwort annehmen könnten :) –

Verwandte Themen