2017-08-12 52 views
0

我想動畫一個UITableViewCell每當它即將離開視圖。我知道有一個didEndDisplayingcell函數,但到那時,爲細胞設置動畫太遲了。因爲它消失了。我基本上想要單元格使用縮小...檢測當UITableViewCell即將離開UITableView

UIView.animate(withDuration: 0.2) { 
    self.cellView.transform = CGAffineTransform(translationX: self.view.frame.size.width, y: 0) 
} 

...只要它回來在屏幕上,縮放恢復正常。

任何想法?

+0

我無法測試正確的解決方案,但由於表視圖基本上基於滾動視圖,因此您應該能夠使用滾動視圖的內容偏移量並將其與該高度進行比較表格本身以及單元格本身的位置。從這3個值中,您應該能夠知道細胞何時將被顯示或隱藏。 –

+0

使用自定義的CollectionViewFlowLayout和'UICollectionView'來實現類似的東西應該很容易。 – dasdom

回答

0

不是一個完整的解決方案,但是這可能讓你有:

self.tableView.indexPathsForVisibleRows 

使用該找什麼在屏幕上。

for path in self.tableView.indexPathsForVisibleRows! { 
    //check if it's past a point on the screen 
    //animate if needed 
} 

override func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    // call the function to check if cells pass a threshold 
} 

檢查這些條件的最後一位將被設置它使細胞在第一負載完全可見,但在這之後,他們開始的狀態下進行動畫。

0

接近,這將是檢查當電池完成後顯示通過UITableViewDelegate方法,最好的方法:

func tableView(UITableView, didEndDisplaying: UITableViewCell, forRowAt: IndexPath) 

告訴代理指定的單元格已從表中刪除。