【发布时间】:2018-02-26 09:42:19
【问题描述】:
我有一个启用了水平滚动方向和分页的 collectionView,现在我想让它像 AppStore 上的游戏部分一样流畅地滚动。
更具体地说,这是我希望第一个单元格的样子:
编辑
我实际上实现了下两张图片,其中一张宽度较小 的单元格和下一个与 selectItem 中的 .centeredHorizontally, 我的问题是滚动不顺畅。
如您所见,出现了第二个单元格。
这是下一个单元格:
你现在可以看到上一个和下一个单元格出现了。
我通过设置这部分代码设法做到了这一点,但弹跳不如 AppStore 顺利。
这是我使用的代码:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
var visibleRect = CGRect()
visibleRect.origin = collectionView.contentOffset
visibleRect.size = collectionView.bounds.size
let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
let visibleIndexPath: IndexPath = collectionView.indexPathForItem(at: visiblePoint) ?? IndexPath()
let indexPath = IndexPath(item: visibleIndexPath[1], section: 0)
collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally )
}
这是我的 collectionView 代码:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let frameSize = collectionView.frame.size
return CGSize(width: frameSize.width - 30, height: frameSize.height - 40)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 20, right: 0)
}
【问题讨论】:
-
要看到第二个单元格的一点点出现,设置单元格的大小比集合视图宽度小一点。
-
@pkc456 对不起,我忘了提,我已经通过使单元格的宽度比collectionView小一点来实现这一点
-
我的问题是当我在稳定之前左右滚动时
标签: ios swift uicollectionview app-store