2016-07-19 12 views
3

初期ロード時にテーブルビューのセルをアニメーション化しようとしています。アニメーションは、アニメーション化を拒否するテーブルの最後のものを除いて、すべてのセルで正常に動作します。UITableView.visibleCellsがすべての可視セルをキャプチャしていない

UITableView.visibleCellsが最後にこのセルを返さないためです。 (セル0-12を返し、最後のセルはインデックス13にあり、はっきりと見えます)

ここにコードがあります。すべての細胞をアニメーション化するために私ができることはありますか?あなたはlet cells = tableView.visibleCellsは、あなただけのこれらの関数のシグネチャ上のメモリをオフに行く

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

ような何かを行うことはできませんが、あなたはポイントを得る呼び出した後

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

答えはありませんが、私は答えを知る必要があります。テーブルの高さを+ 30ポイントで追加しようとすると、それを13とみなしてアニメーション化しますか? –

+0

はいテーブルの高さに30を追加すると、テーブルの高さが13セルの高さよりも小さいため、正しくアニメーション化されます。 – prawn

+0

です。これにより、12個の細胞がアニメ化されます。できることは、30pxでtableHeightを大きくし、アニメーションが完了した後に高さを通常に戻すことです。 –

答えて

2

これは、テーブルの高さが13セルの高さよりも小さいためです。これにより、12個の細胞がアニメ化されます。あなたができることは、テーブルの高さを30ピクセル(またはそれが13のセルを含むまでの任意のピクセル)で大きくし、アニメーションが完了した後、tableViewの高さを通常に戻すことです。

+0

これはとても愚かなので、これを行う必要があります。部分的に見ることができます。アップル.. –

0

+0

は 'cellForRowAtIndexPath'を実行したときにnilを返します – prawn

関連する問題