2016-08-03 23 views
3

Ich verwende verschachtelte UIStackViews in meinem UITableViewCell. Wenn ich scroll, ist es jedoch sehr langsam und beeinflusst die Leistung stark. Gibt es eine Möglichkeit, die Leistung von verschachtelten UIStackViews in UITableViewCell zu verbessern? DieseVerschachtelte UIStackViews in UITableViewCell verlangsamt das Scrollen, reduziert die Leistung. Wie verbessere ich die Leistung?

ist, wie ich meine Stapel meiner UITableViewCell hinzufügen:

let verticalStack = UIStackView() 
    verticalStack.axis = .Vertical 

    for i in 0..<json["Rows"].arrayValue.count{ 

     let horizontalStack = UIStackView() 
     horizontalStack.axis = .Horizontal 

     for j in 0..<json["Rows"][i]["Column"].arrayValue.count{ 
      let label = UILabel() 
      label.text = "Test" 
      horizontalStack.addArrangedSubview(label) 
     } 

     verticalStack.addArrangedSubview(horizontalStack) 
    } 


    cell.addSubview(verticalStack) 
+0

Wie Sie Zelle erstellen? versuchen, Zelle asynchron zu füllen –

+0

Füllen Sie die Zelle asynchron? Wie funktioniert es? –

+1

Sie könnten "Profiling der App" in Betracht ziehen. Drücken und halten Sie die Start-Taste in Xcode, um den Profiler zu starten. Wählen Sie Zeitprofiler und zeichnen Sie dann die App auf, um zu sehen, welche Codezeilen langsam sind. – JMFR

Antwort

2

Das Problem ist, dass Sie mehrere UILabels zuweisen, während Ausreihen. Jedes Mal, wenn Sie scrollen, werden neue Labels erstellt. Normalerweise sollten Sie keine Operationen mit hoher Leistung (wie Zuordnungen) in cellForRowAtIndexPath ausführen. Der bessere Weg ist, alle Etiketten einmal zu erstellen und sie wiederzuverwenden. Wenn Sie eine statische Anzahl von Labels haben, können Sie sie direkt als arrangierte Subviews in der XIB-Datei (oder anfangs in der Zellklasse) hinzufügen, sodass sie wiederverwendet werden.