【问题标题】:dynamic change of UICollectionViewCell widthUICollectionViewCell 宽度的动态变化
【发布时间】:2013-10-29 09:20:15
【问题描述】:

我有一个带有 imageView 和 collectionView 的视图。 ImageView 位于屏幕左上角,大小为 (150,250)。CollectionView 为全屏。 collectionView 的单元格里面有标签。

当单元格靠近 imageView 时,它的宽度应该更小。当单元格低于 imageView 时,它应该是全宽的。这也应该在滚动时起作用,因此单元格的大小应该动态变化。所以,我需要做一个自定义布局。我想,“layoutAttributesForElementsInRect:”就是一个答案。但是如何使某个矩形中的单元格属性发生变化?还是我看错了方向? 提前谢谢你。

【问题讨论】:

    标签: ios uicollectionview uicollectionviewcell uicollectionviewlayout


    【解决方案1】:

    我认为您正在寻找可以调用UICollectionViewcollectionViewLayout 属性的invalidateLayout 方法。此方法会重新生成您的布局,在您的情况下也意味着调用-collectionView: layout: sizeForItemAtIndexPath:,这是反映您所需项目大小的正确位置。 Jirune 指出了如何计算它们的正确方向。

    invalidateLayout can be found here 的用法示例。另请参阅有关该方法的 UICollectionViewLayout 文档:

    使当前布局无效并触发布局更新。

    讨论:

    您可以随时调用此方法来更新布局信息。 此方法使集合视图本身的布局无效,并且 马上返回。因此,您可以从 相同的代码块而不触发多个布局更新。这 实际的布局更新发生在下一个视图布局更新周期。

    【讨论】:

    • 感谢您的回答。我想,应该有一个例子的链接?它不存在
    • 这正是我所需要的。我在 scrollViewDidScroll: 中使用 invalidateLayout 方法,这很有效。谢谢。
    • 另外值得注意的是collectionView:layout:sizeForItemAtIndexPath:是UICollectionViewDelegateFlowLayout协议中的一个方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多