我在UICollectionView
中有一个UISplitViewController
,其中包含一个自定义UICollectionViewLayout
:
prepareLayout
以正确的方式存储属性(基于方向); collectionViewContentSize
根据方向返回正确的集合视图大小layoutAttributesForItemAtIndexPath
只返回存储的属性layoutAttributesForElementsInRect
检查交叉路口我的布局在纵向曼景观模式中如下所示:
现在,问题在于当我更改屏幕的方向时,我使用此功能来触发布局更新:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
[headlinesCollectionView performBatchUpdates:nil completion:nil];
}
这会立即将单元格框架大小更改为新框架大小;然而,单元格位置变得动画。在尝试这个之前,我使用invalidateLayout
,这甚至做得更糟,因为它没有设置大小或位置的动画。
我对如何使这项工作有任何想法?在动画发生时,单元格应调整大小并移动。