一般有两种类型的collection view布局:
1.独立于内容的布局计算。这正是你所知道的像UITableView和UICollectionViewFlowLayout这些情况。每个cell的位置和外观不是基于其显示的内容,但所有cell的显示顺序是基于内容的顺序。可以把默认的flow layout做为例子。每个cell都基于前一个cell放置(或者如果没有足够的空间,则从下一行开始)。布局对象不必访问实际数据来计算布局。
2.基于内容的布局计算。我们的日历视图正是这样类型的例子。为了计算显示事件的起始和结束时间,布局对象需要直接访问collection view的数据源。在很多情况下,布局对象不仅需要取出当前可见cell的数据,还需要从所有记录中取出一些决定当前哪些cell可见的数据。
在我们的日历示例中,布局对象如果访问某一个矩形内cells的属性,那就必须迭代数据源提供的所有事件来决定哪些位于要求的时间窗口中。 与一些相对简单,数据源独立计算的flow layout比起来,这足够计算出cell在一个矩形内的index paths了(假设网格中所有cells的大小都一样)。
如果有一个依赖内容的布局,那就是暗示你需要写自定义的布局类了,同时不能使用自定义的UICollectionViewFlowLayout。所以这正是我们需要做的事情。\
当collection view的宽度改变时,我们自定义的布局必须被丢弃,但这滚动并不会影响到布局。幸运的是,collection view将它的新bounds传给shouldInvalidateLayoutForBoundsChange: method。这样我们便能比较视图当前的bounds和新的bounds来确定返回值:
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
CGRect oldBounds = self.collectionView.bounds;
if (CGRectGetWidth(newBounds) != CGRectGetWidth(oldBounds)) {
return YES;
}
return NO;
}
分享到:
相关推荐
UILabel 自动换行的demo,修改代码中的文字就可以自动适应
博客中的IOS TableView的Cell高度自适应,UILabel自动换行适应 的项目源码
UILabel ios7 与ios7之前实现自适应撑高的方法, 文本的内容长度不一,需要根据内容的多少来自动换行处理文本的内容。这里简单实现ios7自适应撑高的方法.
UILabel、UILabel基本用法、UILabel详解,UILabel常用方法
当我们要在一个UILabel组件上显示指定文章格式和行间距 字体颜色或风格且高度不确定的文章时,只需要把该文件拉进工程。把头文件导入,即可让UILabel组件调用分类方法。任可要求均可满足。并且,还可以求出文章的...
用于iPad的自动布局,自定义cell然后每个cell中得UIlabel 都采用的是Constraints自动布局。然后结果出现了偏差。
ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码 ios uilabel的代码
UIButton,UILabel文字旋转(倾斜),UIButton,UILabel文字旋转(倾斜)
简单方便的给UILabel内容中某几个文字添加点击事件,实现定制要求
微信评论点击确定所点击的用户,获取UIlabel点击处的文字
UILabel 和UITextField 的常用api 介绍和使用
UILabel的删除线效果,主要是继承UiLabel类后重写方法得到 用法跟UILabelg一样,异常简单,多了一个 是否加上删除线的 属性而已
当前 UILabel 类为方法的实现类,针对声明类中对应的封装方法进行具体的相关方法的逻辑实现处理,最终将处理结果返回。
iOS UIlabel 闪烁
整个工程怎么不能直接上传呢,我就把主要代码的类上传了
UIlabel根据文本、字体获得label宽度;自适应宽高
UILabel 继承于 UIView 里的各种属性和方法使用
查找NGUI中UIlabel的路径,自己写的,要用下载吧。
本Demo是在继承UIControl的基础上,绘制出一个类似UILabel 的控件,可以实现文字的显示,文字颜色、大小的设置。