iOS 解决UICollectionView 计算 Cell 大小的问题

所属分类: 软件编程 / IOS 阅读数: 346
收藏 0 赞 0 分享

前言

  API 不熟悉导致的问题,想当然的去理解果然会出问题,这里记录一下 UICollectionView 使用问题。

正文

  陷阱一:minimumLineSpacing、minimumInteritemSpacing

    很容易就把这两个属性设置为 0 ,这两个属性是最小行间距和最小列间距,注意是最小!!也就是说实际上可以 > 0 ,并不是间距就是 0

  陷阱二:sectionInset

    设置 cell 的边距。一开始我以为是每一个 cell 的边距,相邻之间会叠加效果,实际上并不是这样的,这个属性只是保证相邻之间的间距,并不叠加!!

  理解了上面两个陷阱,我们就可以精确计算 Cell 的大小了,再来设置 itemSize 的大小才会正确。例如:

 let ITEM_MIN_WIDTH: CGFloat = 300
  let ITEM_SPACING: CGFloat = 6

  func resizeCollectionView(size: CGSize) {
    if let layout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout {
      layout.minimumLineSpacing = ITEM_SPACING
      layout.minimumInteritemSpacing = ITEM_SPACING

      var itemCount = Int(size.width / ITEM_MIN_WIDTH)
      if itemCount == 0 {
        itemCount = 1
      }

      if itemCount == 1 {
        layout.itemSize = CGSizeMake(size.width, size.width * 10 / 16)
        layout.sectionInset = UIEdgeInsetsMake(6, 0, 0, 0)
      } else {
        let width = (size.width - CGFloat((itemCount + 1)) * ITEM_SPACING) / CGFloat(itemCount)
        layout.itemSize = CGSizeMake(width, width * 10 / 16)
        layout.sectionInset = UIEdgeInsetsMake(ITEM_SPACING, ITEM_SPACING, 0, ITEM_SPACING)
      }
      collectionView?.layoutIfNeeded()
    }
  }

代码说明:

  传入当前 view 的 size ,动态计算 cell 大小,可以方便的适配 iPhone/iPad ,单列时隐藏两边边距,多列时显示两边间隙。

以上就是对IOS UICollectionView 用法和说明,希望能帮助 IOS开发的朋友。

更多精彩内容其他人还在看

IOS 使用Block二次封装AFNetworking 3.0详解

这篇文章主要介绍了IOS 使用Block二次封装AFNetworking 3.0详解的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS 开发之对象为空的判断(nil、null)详解

这篇文章主要介绍了IOS 开发之对象为空的判断(nil、null)详解的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS创建对象的不同姿势详解

这篇文章主要介绍了iOS创建对象的不同姿势,文中介绍的很详细,对大家具有一定的参考价值,有需要的朋友们下面来一起学习学习吧。
收藏 0 赞 0 分享

探究iOS多线程究竟不安全在哪里?

iOS多线程安全的概念在很多地方都会遇到,为什么不安全,不安全又该怎么去定义,其实是个值得深究的话题。那么通过下面这篇文章小编和大家一起来探究了iOS多线程究竟不安全在哪里?需要的朋友可以参考学习。
收藏 0 赞 0 分享

IOS购物车界面实现效果示例

本篇文章主要介绍了IOS购物车界面实现效果示例,有需要了解的朋友可参考。希望此文章对各位有所帮助。
收藏 0 赞 0 分享

iOS Touch ID 身份认证

本文主要介绍了iOS Touch ID 身份认证的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

iOS 使用 socket 实现即时通信示例(非第三方库)

这篇文章主要介绍了iOS 使用 socket 即时通信示例(非第三方库)的资料,这里整理了详细的代码,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

ios常见加密解密方法(RSA、DES 、AES、MD5)

本篇文章主要介绍了ios常见加密解密方法(RSA、DES 、AES、MD5),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

iOS利用AFNetworking实现文件上传的示例代码

本篇文章主要介绍了iOS利用AFNetworking实现文件上传的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈IOS中AFNetworking网络请求的get和post步骤

本篇文章主要介绍了浅谈IOS中AFNetworking网络请求的get和post步骤的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
收藏 0 赞 0 分享
查看更多