2017-11-22 4 views
0

Ich habe eine Tabellenansicht. Ich möchte einige Tabellenansicht Zellen mit dynamischer Höhe, während andere Zellen mit der festen Höhe. Für die dynamische Höhe habe ich folgende Zeilen in meinem viewDidLoad View Controller Delegate verwendet.Einige Tabellenansichtszellen mit dynamischer Höhe, andere mit fester Höhe

tableView.estimatedRowHeight = 200 
tableView.rowHeight = UITableViewAutomaticDimension 

was wird der effiziente Weg sein, fixed height cells und self sizing cells in einem Tableview zu haben?

Vielen Dank im Voraus.

Antwort

0

Swift 4

Sie können die indexPath von dieser Funktion verwenden, um für andere feste Höhe für bestimmte Zeilen und dynamische Höhe zurück.

// UITableViewAutomaticDimension calculates height of label contents/text 
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
1

Swift 3

Sie dynamische & statische Zellenhöhe in einem Tableview, indem Sie diese

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    if indexPath.row == 0 { 
     return 120.0 // for static cell height 
    } 
    else { 
     return UITableViewAutomaticDimension // for dynamic cell height 
    } 
} 

Sie haben zu implementieren einen anderen Tableview estimatedHeightForRowAt Verfahren wie die

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 

    if indexPath.row == 0 { 
     return 120.0 
    } 
    else { 
     return UITableViewAutomaticDimension 
    } 
} 
retrun können

Vergessen Sie nicht, label lineNumbers auf 0 & lineBreakMode zu setzen, welches Etikett dynamisch erweitert wird & Am wichtigsten ist, dass die Höhe der Beschriftung nicht festgelegt wird.

+0

ist es obligatorisch, Delegatmethode "estimatedHeightForRowAt" zu implementieren? –

+0

Zuerst habe ich ohne es versucht und das Ergebnis ist nicht das, was ich erwartet habe. Ich meine, die Zellenhöhe dehnt sich überhaupt nicht aus. Danach habe ich versucht und das erwartete Ergebnis erreicht, das ich wollte. Ich habe die gleiche Art von Problem und ich löste es auf diese Weise. –

+0

Es ist eine zu späte Antwort obwohl. Hast du eine bessere Lösung gefunden? Wenn Sie dann frei haben zu teilen. –

0

Angenommen, indexPath.row = 0 und 1 enthalten statische und dynamische Höhe der Höhe bzw. dann

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
    if indexPath.row == 0 { 
     return 120 
    } else { 
     return UITableViewAutomaticDimension 
    } 
} 
Verwandte Themen