当前位置: 首页 > wzjs >正文

设计网站推荐国外营销课程

设计网站推荐国外,营销课程,客户端网站建设文档,xrea免费 wordpress 加速前言 想必大家工作中或多或少会遇到下图样式的UI需求吧 像这种cell长度不固定,并且还能实现的分页效果UI还是很常见的 实现 我们这里实现主要采用collection view,实现的方式是自定义一个UICollectionViewFlowLayout的子类,在这个类里对…

前言

想必大家工作中或多或少会遇到下图样式的UI需求吧
录屏效果

像这种cell长度不固定,并且还能实现的分页效果UI还是很常见的

实现

我们这里实现主要采用collection view,实现的方式是自定义一个UICollectionViewFlowLayout的子类,在这个类里对cell布局进行排列

  • 当出现page size小于collection view的size的时候,可以使用ZLCollectionFreePageLayout一下子就实现分页效果
  • 并且不需要设置属性collectionView.isPagingEnabled = true,只要设置了layout为ZLCollectionFreePageLayout,就可以自动实现这种效果

主要代码如下:

open override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {guard let collectionView = collectionView else {return super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity)}var pWOrH: CGFloat = 0var contentOffsetXOrY: CGFloat = 0var collectionViewContentWOrH: CGFloat = 0var velocityXOrY: CGFloat = 0if scrollDirection == .horizontal {pWOrH = (pageWOrH == 0 ? collectionView.frame.width : pageWOrH) + minimumLineSpacingcontentOffsetXOrY = collectionView.contentOffset.xcollectionViewContentWOrH = collectionViewContentSize.widthvelocityXOrY = velocity.x} else {pWOrH = (pageWOrH == 0 ? collectionView.frame.height : pageWOrH) + minimumInteritemSpacingcontentOffsetXOrY = collectionView.contentOffset.ycollectionViewContentWOrH = collectionViewContentSize.heightvelocityXOrY = velocity.y}let originalPage = contentOffsetXOrY / pWOrHvar nextPage = (velocityXOrY > 0) ? ceil(originalPage) : floor(originalPage)if (nextPage + 1.0) * pWOrH > collectionViewContentWOrH { nextPage -= 1.0 }let currentPage = (velocityXOrY > 0) ? floor(originalPage) : ceil(originalPage)let pannedLessThanOnePage = abs(1 + currentPage - originalPage) > 0.5let flicked = abs(velocityXOrY) > 0.01var newProposedContentOffset = proposedContentOffsetif !(pannedLessThanOnePage && flicked) {nextPage = round(originalPage)}newProposedContentOffset.x = nextPage * pWOrHreturn newProposedContentOffset}
  • 在使用的时候,只需要将collection.collectionViewLayout的属性设置为我们自定义的layout对象,具体代码如下面的示例代码:
private lazy var collectionView: UICollectionView = {// 实例化一个ZLCollectionLeftLayout对象let defaultLayout = ZLCollectionFreePageLayout()// 自定义page width或者page heightdefaultLayout.pageWOrH = 200.0defaultLayout.minimumLineSpacing = 10.0defaultLayout.minimumInteritemSpacing = 10.0defaultLayout.scrollDirection = .verticaldefaultLayout.sectionInset = UIEdgeInsets(top: 10.0, left: 10.0, bottom: 10.0, right: 10.0)// 设置collection view的layout为ZLCollectionFreePageLayoutlet collectionView = UICollectionView(frame: .zero, collectionViewLayout: defaultLayout)collectionView.showsVerticalScrollIndicator = falsereturn collectionView
}()
  • 然后就会自动实现分页效果

  • 并且不需要设置属性collectionView.isPagingEnabled = true

开源代码地址

代码开源到github上了,可以直接拿来使用

开源代码地址

http://www.dtcms.com/wzjs/57697.html

相关文章:

  • 东莞公司企业设计网站建设深圳外包seo
  • 网站建设工具品牌有哪些教育培训排行榜前十名
  • 国内外c2c网站有哪些网站推广的常用途径有哪些
  • wordpress制作小工具官网seo是什么意思
  • 如何用免费服务器做网站seow
  • app商城开发定制如何做网站推广优化
  • 上海网站搜索排名个人建站
  • 网站后台开发教程免费个人网站怎么建立
  • 网站怎样做排名靠前广州权威发布
  • 做网站建设一年能赚多少搭建网站的步骤和顺序
  • 物流加盟信息网站信阳网站推广公司
  • 如何注册域名网站蓝牙耳机网络营销推广方案
  • 前端开发的三大基石郑州seo建站
  • 台州网站制作教程中国培训网的证书含金量
  • 工业网站模板外包公司什么意思
  • 网站建设煊煊网高端seo服务
  • 公司网站建设设计公司排名长沙网站推广seo
  • 网站名超链接怎么做利于seo的建站系统有哪些
  • 淄博网站设计制作网页关键词优化软件
  • 企业网站建设能开广告服务费吗太原关键词排名优化
  • 海门城乡建设管理局网站百度竞价登陆
  • 湘潭自助建站系统企业网站制作开发
  • 优化服务质量成都官网seo厂家
  • 衡水市做网站如何推广引流
  • 建设网站物业经理上岗证陈俊华济南网站建设哪家专业
  • 上每网站建设网站权重
  • 在日常网站建设中宣传积极百度指数有什么作用
  • 日ip5000的网站怎么做线下宣传渠道和宣传方式
  • 英文网站建设580seo公司推荐
  • 有没有专门做素食的美食网站国内真正的永久免费砖石