前言

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

声明 
  欢迎转载,但请保留文章原始出处:) 
  博客园:http://www.cnblogs.com
  农民伯伯: http://over140.cnblogs.com

正文

  陷阱一:minimumLineSpacing、minimumInteritemSpacing

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

  陷阱二:sectionInset

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

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

    let ITEM_MIN_WIDTH: CGFloat = 300let ITEM_SPACING: CGFloat = 6func resizeCollectionView(size: CGSize) {if let layout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout {layout.minimumLineSpacing = ITEM_SPACINGlayout.minimumInteritemSpacing = ITEM_SPACINGvar 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 ,单列时隐藏两边边距,多列时显示两边间隙。

【Swift】iOS UICollectionView 计算 Cell 大小的陷阱相关推荐

  1. iOS开发总结-UITableView 自定义cell和动态计算cell的高度

    UITableView cell自定义头文件: shopCell.h #import <UIKit/UIKit.h> @interface shopCell : UITableViewCe ...

  2. iOS UICollectionView实现瀑布流(3)

    前面两篇Blog简单的介绍了UICollection的基本使用并实现了类似Android的Gallery效果,这篇文章使用UICollection来实现瀑布流效果,代码主要是在极客学院Carol老师的 ...

  3. iOS UICollectionView示例教程

    In this tutorial we'll look into iOS UICollectionView component and develop a basic application out ...

  4. iOS UICollectionView 使用

    应用场景: UICollectionView 横滑和竖滑只支持一种,要是想兼用 必须套一下两个UICollectionView一起使用 基本使用 1:首先需要先添加UICollectionView的代 ...

  5. Android与Swift iOS开发:语言与框架对比

    Swift是现在Apple主推的语言,2014年新推出的语言,比 Scala等"新"语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android N ...

  6. iOS UICollectionView的简单使用和常用代理方法

    UICollectionView相对于UITableView有更加自由的布局,做出的界面可变性更大最近开始接触使用UICollectionView,整理了一下常用的代理方法. 首先需要先添加UICol ...

  7. 从Java/Android到Swift iOS开发:语言与框架对比

    今天分享的主题是Java/Android开发人员如何快速上手Swift iOS开发.主要内容如下: WhyFrom Java/Android to Swift Swift语言为什么值得学习? Java ...

  8. Android Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

  9. 《Swift iOS应用开发实战》——2.2 了解故事板

    本节书摘来自华章计算机<Swift iOS应用开发实战>一书中的第2章,第2.2节,作者:刘铭 著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.2 了 ...

最新文章

  1. python编辑svg文件_SVG 文本
  2. 分析决策树算法和逻辑回归算法的不同之处
  3. Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
  4. MySQL简单查询性能分析
  5. linux 普通用户touch权限不够_Linux 开启指令
  6. 【Windows】XShell中使用小键盘和ALT键(作Meta键),使BackSpace正常
  7. 用Python爬了IPhone全部游戏免费榜的实时排名,我发现~
  8. 不可小觑汽车广告海报,设计感分分钟爆棚!
  9. Javascript中最常用的经典技巧
  10. crash fault-tolerant protocols和Byzantine fault-tolerant protocols区别
  11. 一文了解Android游戏SDK开发
  12. 什么是国家机关、国有企业、事业单位?
  13. MTK机型刷机授权 固件转换 分区提取 nv备份 恢复工具教程
  14. Word OpenXML常用标签openxml标签
  15. 用 JavaScript 实现一个 TicTacToe 游戏 —— 编程训练
  16. 速卖通AE平台+聚石塔+奇门 完整教程V2
  17. 前端面试题整理(一)
  18. gis生成道路中心线_ArcGIS方法-利用到路面提取道路中心线的方法
  19. html实现手风琴轮播图,javascript经典特效分享 手风琴、轮播图、图片滑动
  20. dve 二维数组信号 显示波形_交互式仿真下dve和verdi中查看二维数组值

热门文章

  1. 嬴彻科技这一年:“姚班”天才加盟、运力模式显现、已有商业化收入
  2. 一架无人机加入警队4个月,墨西哥小城犯罪率下降了10%
  3. Mysql你应该要懂索引知识
  4. Python开发技术详解PDF
  5. 站在悬崖边上,金立手机的生死较量
  6. 使用代码形式配置Log4J日志框架
  7. 基于HFC实现10Gbps对称数据传输
  8. 网页打开Android APP
  9. SQL service
  10. Java线程栈的获取和分析