UICollectionViewCell全屏顯示時(shí)呼奢,分頁(yè)很簡(jiǎn)單现斋,只要一句代碼collectView?.isPagingEnabled = true就搞定了。
但如果cell之間有間隙,例如:10pixel碟渺,上面的代碼就會(huì)導(dǎo)致cell滑動(dòng)后不居中肛冶,此時(shí)通過scrollViewWillEndDragging回調(diào)來處理比較好街氢。直接貼上Swift代碼,如下:
override func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) {
var item = ceil(scrollView.contentOffset.x/kScreenHeight)
print("scrollViewWillEndDragging? \(velocity)? \(targetContentOffset.pointee)")
if abs(velocity.x) > 1.0 || scrollView.contentOffset.x.truncatingRemainder(dividingBy: kScreenHeight) >= kScreenHeight/2 {
targetContentOffset.deinitialize()
var index = scrollView.contentOffset.x/kScreenHeight + 1
if velocity.x < 0 {
index = scrollView.contentOffset.x/kScreenWidth
item = floor(scrollView.contentOffset.x/kScreenWidth)
}
targetContentOffset.pointee = CGPoint(x:floor(index) * kScreenWidth + 5 * item, y:0)
}else {
targetContentOffset.deinitialize()
targetContentOffset.pointee = CGPoint(x:floor(scrollView.contentOffset.x/kScreenWidth)*kScreenWidth + 5 * item, y:0)
}
}