详情请看
基础知识点
contentOffset与contentInset的相互影响
https://www.jianshu.com/p/c5bb5e45a95d
使用
https://www.jianshu.com/p/45ff718090a8
https://www.jianshu.com/p/2b9a73aefe28
实例
对于重要参数的解释:
self.collectionView.contentOffset.x :这是内容最左侧相对于 collectionView 最左侧的偏移值
attributes.center.x :这是当前 item 的水平中心点,该 x 值是从内容的最左侧算起,直到当前 item 的水平中心点的,全部加起来就是该 item 的水平中心 x。
https://blog.csdn.net/u013410274/article/details/79925531
卡片图片浏览器(包括动画计算方法)
https://blog.csdn.net/u013282507/article/details/53103816
重要的答疑
问题:-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
中的rect的尺寸指的是哪个尺寸?
解决思路来源:https://segmentfault.com/q/1010000002934267
个人的猜测:
平时自定义UIControllerView的布局都是通过重写方法,
方法一
-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
这个方法返回cell的布局属性,并且是多个的,而对于修改cell的布局属性还有一个方法
方法二
-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
中两种的关系就像上面的链接上说的一样,方法一实质上也是通过方法二修改cell的布局属性,通过对方法一的断点我们可以知道返回的数组只有几个(比如4个,而全部的数据有10个),为什么不是一次性返回所有的了,这里就是关于参数rect的缘故了,rect文字的解释就是可见区域的rect,这是为了整体的效果,而对于即将显示的cell做预处理,而这个值不是我们定义的,都是系统根据collectView的bouns的大小相应返回的,当然这个值我们是可以修改的,比如在实际使用的出现“闪屏”(解释:突兀的过度),我们可以适当的加大rect可见区域的值,比如修改后返回的数组变成6个了,这样就能解决闪屏的问题
网友评论