我已经构建了一个collectionView,我想主要在视图的中心显示一个电影海报。我将在collectionView中显示大约20部电影,所以我想在右边显示下一部电影的一小部分,当我转到下一页时,焦点的电影将居中,与前一部分相同下一部电影分别在左侧和右侧拨出。
通过我的代码方式,当我翻页到下一部电影时,下一部电影根本没有居中,它在x轴上向右移动了太多。如何以编程方式设置分页所需的距离?如何实现collectionView在第一个页面之后正确居中页面的能力?
我的collectionView启用了分页。我还没有创建自定义collectionViewFlowLayout。
Screenshots of my issue Video of my issue
这是我的collectionView和scrollView代码:
extension MainViewController: UICollectionViewDelegateFlowLayout {
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let posterWidth = (collectionView.frame.size.height / 3) * 2
return CGSizeMake(posterWidth, collectionView.frame.size.height)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
let posterWidth = (collectionView.frame.size.height / 3) * 2
let horizontalInset = (collectionView.frame.size.width - posterWidth) / 2
return UIEdgeInsetsMake(0, horizontalInset, 0, horizontalInset)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 20
}
}
---------------
extension MainViewController: UIScrollViewDelegate {
func scrollViewDidScroll(scrollView: UIScrollView) {
let index = Int(collectionView.contentOffset.x / collectionView.frame.size.width)
let movie = movies[index]
updateViews(movie)
}
}
答案 0 :(得分:0)
尝试使用
[yourCollectionView setPagingEnabled:YES];