【问题标题】:Infinite Loop of layoutAttributesForElementsInRectlayoutAttributesForElementsInRect 的无限循环
【发布时间】:2014-06-05 16:05:44
【问题描述】:

我完全不知道为什么会发生这种情况,但无论出于何种原因,我使用的集合视图都会无限循环 [UICollectionViewData layoutAttributesForElementsInRect:] 方法。

集合视图位于我的自定义导航栏内。在我使用此自定义导航栏的一种情况下,一切都按预期工作。在另一种情况下,它会无限循环。

  • 我已经尝试过不在collectionView 上设置数据源或委托。
  • 我已尝试设置数据源和委托,但为itemsInSection 返回0
  • 我在工作情况下使用自动布局,我在工作情况下初始化自定义导航栏。

关于发布代码,我不确定要发布什么。无限循环在调用[UIWindow makeKeyAndVisible] 之后开始。此方法永远不会返回。直到经过时间分析后,我才发现是这个[UICollectionViewData layoutAttributesForElementsInRect:] 导致了问题。

【问题讨论】:

    标签: ios objective-c uicollectionview infinite-loop freeze


    【解决方案1】:

    当我手动将 contentOffset 更新为没有元素的 collectionView 时(即 numberOfItemsInSection 为 0 时),我在 [UICollectionViewData layoutAttributesForElementsInRect:] 中遇到了同样的无限循环问题。

    【讨论】:

    • 这条评论救了我们的培根。谢谢安德鲁
    • 伙计,如果我 2 天前才找到你的答案.. 非常感谢。
    • 在我的情况下,我在集合视图的超级视图上调用 setNeedsLayout(不需要设置偏移量)
    【解决方案2】:

    我对表格视图中不同集合视图的高度有疑问,所以我遵循了这个UICollectionView inside a UITableViewCell — dynamic height?。但我错误地注释掉了[self.collectionView layoutIfNeeded];,因为我认为它会提高滚动性能。我取消了它的注释,它又工作了!不知道为什么它会起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 2012-12-24
      • 2013-09-05
      • 1970-01-01
      相关资源
      最近更新 更多