2017-04-18 43 views
0

嗨,我是新來的ios開發,我使用collectionview,一次顯示一個單元格,並水平滾動(如畫廊),我正在嘗試做什麼是當單元格滾動時單元格0和單元格1顯示在屏幕上時顯示在屏幕上的標籤的一半。 當滾動停止時,當前標籤中的文本會發生變化。 我使用func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)如何知道設備屏幕上的collectionview單元的位置

編輯1:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 
    let visibleRect = CGRect(origin: imageCollectionView.contentOffset, size: (imageCollectionView.bounds.size)) 
    let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY) 
    let indexPath : IndexPath = imageCollectionView.indexPathForItem(at: visiblePoint)! 
    lblUserName.text = arrayImageData[indexPath.row]["userName"] as! String? 
    lblTime.text = arrayImageData[indexPath.row]["time"] as! String? 
    imgProfilePic.kf.setImage(with: arrayImageData[indexPath.row]["profilePic"] as! Resource?) 
} 
+0

你真的很接近!代理中還有另一種方法可以滿足您的需求 - 「scrollViewDidScroll」 - https://developer.apple.com/reference/uikit/uiscrollviewdelegate/1619392-scrollviewdidscroll – Losiowaty

+0

@Loisiowaty 請檢查編輯部分的問題,何時我在'scrollViewDidScroll'中調用了相同的代碼,我在'let indexpath'行上得到了一個BAD_EXCESS崩潰行 – explorer

+0

這很可能是因爲你強制解開('!')'indexPathForItem'的返回值 - 當點位於單元格之間時,價值可以是'零' - 你需要考慮到這一點。 – Losiowaty

回答

0

你只需要實現scrollViewDidScroll代替。

相關問題