2016-07-19 17 views
3

Ich versuche, eine Tabelle Zellen bei der anfänglichen Belastung zu animieren. Die Animation funktioniert für alle Zellen, bis auf die letzte am unteren Ende der Tabelle, die nicht animiert werden soll.UITableView.visibleCells erfassen nicht alle sichtbaren Zellen

Dies ist, weil die UITableView.visibleCells diese Zelle am Ende nicht zurückgibt. (es gibt Zellen 0-12 zurück, die letzte Zelle ist bei Index 13 und ist deutlich sichtbar)

Hier ist der Code. Kann ich irgendetwas tun, um sicherzustellen, dass alle Zellen animiert werden?

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    tableView.reloadData() 

    let cells = tableView.visibleCells 
    let tableHeight: CGFloat = clubsTable.bounds.size.height 

    for i in cells { 
     let cell: UITableViewCell = i as UITableViewCell 
     cell.transform = CGAffineTransformMakeTranslation(0, tableHeight) 
    } 


    var index = 0 

    for a in cells { 
     let cell: UITableViewCell = a as UITableViewCell 

     UIView.animateWithDuration(1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: UIViewAnimationOptions.CurveEaseIn, animations: { 
      cell.transform = CGAffineTransformMakeTranslation(0, 0); 
      }, completion: { (complete) in 

     }) 

     index += 1 
    } 
} 
+0

keine Antwort, aber ich muss wissen, um zu antworten, versuchen, die Höhe der Tabelle um + 30 Punkte hinzuzufügen, betrachtet sie 13 und animiert es? –

+0

ja das Hinzufügen von 30 zur Tischhöhe macht es richtig animieren – prawn

+0

das ist, weil die Höhe Ihrer Tabelle ist weniger als die Höhe von 13 Zellen. So animiert es 12 Zellen. Was Sie tun können, ist, die tableHeight in 30px größer zu machen, und nachdem die Animation fertig ist, ändern Sie die Höhe wieder auf normal. –

Antwort

2

Das ist, weil die Höhe Ihres Tisches weniger als die Höhe von 13 Zellen ist. So animiert es 12 Zellen. Sie können die Tabellenhöhe in 30px (oder einem beliebigen px, bis sie 13 Zellen enthält) vergrößern. Nachdem die Animation abgeschlossen ist, ändern Sie die Höhe der tableView wieder auf normal.

+0

Es ist so dumm, dass wir das tun müssen. Teilweise sichtbar ist noch sichtbar. Komm schon Apfel .. –

0

nach dem Aufruf let cells = tableView.visibleCells können Sie nicht nur etwas tun, wie

let indexPath = NSIndexPath(forRow: cells.count, inSection: 0) 
cells.append(tableView.cellForRowAtIndexPath(indexPath)) 

Speicher auf dieser Funktionssignaturen abgehend aber Sie erhalten den Punkt.

+0

gibt eine Null zurück, wenn ich einen 'cellForRowAtIndexPath' mache – prawn

Verwandte Themen