首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >collectionViewContentSize()对contentSize

collectionViewContentSize()对contentSize
EN

Stack Overflow用户
提问于 2014-08-15 19:55:54
回答 2查看 7K关注 0票数 5

两者有什么区别?

collectionViewController.collectionViewLayout.collectionViewContentSize()collectionViewController.collectionView.contentSize

你喜欢用什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-15 22:38:27

collectionViewContentSize()是一种可以覆盖(在布局中)来动态生成大小的方法。

contentSizecollectionView (或任何UIScrollView的属性)的一个属性,如果没有这样的覆盖,它将被使用。

它类似于UITableViewrowHeightUITableViewDelegateheightForRowAtIndexPath()

还请注意(如注释中提到的),"contentSizeUIScrollView-inherited属性,而itemSizeUICollectionViewLayout上允许为每个单元格指定毯子大小的属性“。

票数 -2
EN

Stack Overflow用户

发布于 2015-08-18 11:32:36

contentSizeUIScrollView的一个属性,而collectionViewContentSize()UICollectionViewLayout的一个方法。

在阅读编程iOS 7,第4版,同时总结UICollectionViewLayout时,作者说:

集合视图的布局工作马类。如果没有布局实例,集合视图就不可能存在!正如我已经说过的,布局知道所有子视图占用多少空间,提供了设置集合视图的contentSize的collectionViewContentSize,即qua滚动视图。

从个人经验来看,我在使用layout.collectionViewContentSize()时遇到了困难。控制台显示下面的警告,或者布局最初看起来不正确。

代码语言:javascript
复制
the behavior of the UICollectionViewFlowLayout is not defined because: the item height must be less than the height of the UICollectionView minus the section insets top and bottom values.

我猜collectionViewContentSize()所做的不仅仅是返回内容大小。我认为调用它实际上启动了布局计算。如果--在这些计算过程中--检测到异常,那么所显示的警告就是输出。

对于我来说,在iPad上进行测试并通过Xib启动集合视图,Xib的帧是iPhone大小的。从viewDidLayoutSubviews触发的初始通行证处理的是小视图。检查集合视图的框架,它太小了。随后的布局引擎通行证最终提供了正确的大小,但那时已经显示了警告。

接下来,我尝试使Xib框架更大。这消除了错误,但造成了更严重的问题;布局最初是错误的。在滚动中,当布局被重新计算到正确的维度时,您会看到项目跳跃。

答案可能是打电话给invalidateLayout(),但我不确定在哪里。在实例化集合视图之后,我尝试了一下,但没有成功。

那么答案呢?我用了contentSize.viewDidLayoutSubviews中的初始传递仍然显示出不正确的大小,但最终还是好的。它不会产生任何控制台警告,更好的是,不会触发基于旧框架大小的任何错误布局。更好的是,旋转是自动处理的,因为viewDidLayoutSubviews将被自动调用,此时内容大小将被更新。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25333294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档