设为首页 加入收藏

TOP

UIScrollView 和 UICollectionView 分页效果(三)
2017-10-12 12:02:04 】 浏览:10132
Tags:UIScrollView UICollectionView 效果
oat(index) }

同样需要在最后增加一个 cell,防止滚动到最后一页出问题。假设屏幕宽度最多能容纳 n 个 cell (n + 1 个就超出屏幕),那么 cell 的宽度为屏幕宽度减 n 个 cell 的宽度。以下是 cell 的大小

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    switch indexPath.item {
    case numberOfItems:
        let n = Int(UIScreen.main.bounds.width / cellWidth)
        let d = UIScreen.main.bounds.width - cellWidth * CGFloat(n)
        return CGSize(width: d, height: cellHeight)
    default:
        return CGSize(width: cellWidth, height: cellHeight)
    }
}

现在滚动效果的问题是,从松开手到停止滚动的时间太长。加上一句代码就能解决

collectionView.decelerationRate = UIScrollViewDecelerationRateFast

decelerationRateUIScrollView的属性,设置为UIScrollViewDecelerationRateFast,表示滚动松开手后减速更快(加速度与速度方向相反,加速度的绝对值增大),因而滚动会很快减速并停止。

UIScrollView + UICollectionView 分页

如果一定要UICollectionView显示分页内容,并且完全有isPagingEnabledtrue的分页效果,可以结合UIScrollView来实现。以下是大概思路。

UICollectionView放在底部,正常显示内容。把上文自定义的PageScrollView放在顶部,响应触摸范围为UICollectionView的范围,设置UIScrollViewcontentSize。触摸发生在 scroll view 上。在UIScrollViewDelegatescrollViewDidScroll(_ scrollView: UIScrollView)方法中,让 collection view 跟着 scroll view 滚动。如果要 collection view 响应选中 cell 等操作,需要写其他的代码。

这个方法比较麻烦,要把对 scroll view 的手势传给 collection view,每次刷新数据都要重新设置 scroll view 的contentSize。具体见 GitHub:https://github.com/Silence-GitHub/PageScrollViewDemo

转载请注明出处:http://www.cnblogs.com/silence-cnblogs/p/6529728.html

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OtherViews系统控件 下一篇Swift应用案例 1.无限轮播

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目