在屏幕上查看可见,但是执行了动态窗口:等等从未调用过

时间:2017-05-20 05:03:23

标签: ios objective-c uiview uiviewanimation

我正在使用didMoveToWindow:来触发带有自定义UICollectionViewCell的动画。奇怪的是......第一和第二单元格中的动画完美运行(以及应该调用的所有方法)......

...对于第3个单元格,它会显示,但{3}},didMoveToWindow:willMoveToWindow:didMoveToSuperview:都不会被调用。我甚至试过willMoveToSuperview:,它从未被称为......

我不明白如何在没有调用drawRect:的情况下在屏幕上绘制。

drawRect:我刚刚打印到日志中,然后调用了超级实现。即使从未调用/打印日志消息,这样做确实将背景变为黑色(通常是透视)。所以必须......做了些什么......?

每个单元格出现在该位置周围,然后移动到位。背景表示UICollectionView的框架..以显示所有内容都在边界内。

更新 我尝试使用drawRect:,但同样的事情......它只需要前两个单元格。但是,当插入第3个单元格并重新加载第2个单元格时,第2个调用didAddSubview: ...集合视图的可见单元格数为3。

UPDATE2: 当我通过Xcode查看视图层次结构时,它会将所有3个单元格显示为集合的子视图....但不知何故,它只是为前两个调用didAddSubview: addSubview: ..奇怪的

enter image description here

1 个答案:

答案 0 :(得分:0)

过去几天忙于其他工作,昨晚又回到了这个问题......神奇地说虫子已经消失了! (在我做过一些意外重构之后)。

在我做“performBatchUpdates:”之前,我1)重新加载了前一个单元格,2)插入了新单元格。当我这样做时,视图生命周期事件从未在插入的单元格上调用(从第3个单元格开始)。

当我切换到手动重新加载前一个单元格的视图(只是更改掩码视图,因此没有理由正式重新加载单元格)时通过使用“cellForItemAtIndexPath:”捕获它,并且仅执行执行批量更新中的插入...我现在收到插入单元格的所有正确的视图生命周期事件。

所以这个错误就在那里。