当UICV布局无效时,UICollectionViewCell无法重新布局其子视图

时间:2015-06-20 17:38:01

标签: layout ios8 uicollectionview uicollectionviewcell

我在这个问题上写了更多detailed blog post,但这里是要点。我在另一个UIViewController中嵌入了UICollectionView。当容器视图更改其边界时,集合视图也会更改其边界,这也会触发其UICollectionViewLayout重新布局。

一切都很好,除了单元格不使用旧边界重新使用新框架和布局。 这是重要方法的日志,很明显layoutSubviews使用了错误的(旧)框架。

__57-[RTColumnViewController processCalculatorKeypadVisible:]_block_invoke

-[RTUnitLayout shouldInvalidateLayoutForBoundsChange:] : YES, {{0, 1014}, {272, 375}} -> {{0, 1014}, {175, 375}}
-[RTUnitLayout prepareLayout], bounds={{0, 1014}, {175, 375}}, itemsize={175, 89}
-[RTUnitLayout prepareForAnimatedBoundsChange:] : {{0, 1014}, {272, 375}} -> {{0, 1014}, {175, 375}}

-[RTUnitLayout layoutAttributesForElementsInRect:] : rect={{0, 667}, {175, 1334}}
__50-[RTUnitLayout layoutAttributesForElementsInRect:]_block_invoke_2 : <NSIndexPath: 0xc000000000048016> {length = 2, path = 0 - 9} frame={{0, 801}, {175, 89}}
__50-[RTUnitLayout layoutAttributesForElementsInRect:]_block_invoke_2 : <NSIndexPath: 0xc000000000058016> {length = 2, path = 0 - 11} frame={{0, 979}, {175, 89}}
...

-[RTUnitLayout finalLayoutAttributesForDisappearingItemAtIndexPath:] : <NSIndexPath: 0xc000000000058016> {length = 2, path = 0 - 11} frame={{0, 979}, {272, 89}}
-[RTUnitLayout initialLayoutAttributesForAppearingItemAtIndexPath:] : <NSIndexPath: 0xc000000000058016> {length = 2, path = 0 - 11} frame={{0, 979}, {175, 89}}
-[RTUnitCell layoutSubviews] : pre-super: {{0, 979}, {272, 89}}
-[RTUnitCell layoutSubviews] : post-super: {{0, 979}, {272, 89}}
...

-[RTUnitLayout finalizeAnimatedBoundsChange] : {{0, 1014}, {175, 375}}

__57-[RTColumnViewController processCalculatorKeypadVisible:]_block_invoke623 : completed

完成后,如果我只是轻轻滚动UICV,它将触发重新显示,所有单元格将按原样显示。我只是难以理解为什么在原始动画期间不会发生这种情况,应该这样做。

任何想法......?

1 个答案:

答案 0 :(得分:0)

从Apple工程师那里得到回报。如果你有UICollectionViewLayoutAttributes的自定义子类,不要像我那样犯一个愚蠢的错误,并返回YES表单isEqual:method。

必须是:

 list2env(lst, envir = .GlobalEnv)

 Station1
 #   Indicator Resp Status
 #1        Ca    +   16.0
 #2        Zn    -  134.0
 #3        Pb    +    3.5

blog post中的更多细节。