ios – UICollectionView在帧更改后错误地显示单元格

我注意到,如果我更改UICollectionView的帧(例如,当切换调用状态栏时),集合视图不会为其新帧正确更新其单元格.在一段简短的视频中看起来最简单:

http://cl.ly/2t2Y2A3A2w1D/CollectionViewTest.mov

这个简单测试的源文件在这里

http://cl.ly/0S0A360B3I3Q/CollectionViewTest.zip

我是否使用UICollectionViewController或UIViewController似乎并不重要.有没有人见过这个?我错过了什么吗?我发现的唯一解决方法是在视图控制器的viewWillLayoutSubviews或viewDidLayoutSubviews中的集合视图上调用reloadData,但是当集合视图的框架受到用户拖动的影响时,它远非理想,因为reloadData被多次调用并导致用户拖动时非常缓慢的UI更新.

解决方法

我有一个类似的问题,我的UICollectionView的框架发生了变化,除非我调用reloadData,否则它会卡在同一个地方,而不会移动CollectionView.

我通过将它添加到我的CollectionViewFlowLayout来修复它:

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    return YES;
}

工作得很好.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...