0

我有一个标准的 FlowLayout UICollectionView (垂直滚动,单节,固定大小的项目,但列数可变(例如 iphone 横向 2 v 水平 3 中的 1 或 ipad 上的 4)。我正在使用 NSFetchedResultsController 来管理从核心数据显示的项目。

我在页脚补充中有一个添加按钮来添加新项目。当用户按下“添加”按钮时,我自然想添加一个项目,但我希望“添加”按钮保留在屏幕上(必要时向上滚动),以便他们可以轻松地再次按下它。

我目前检查 addItem 例程:

UICollectionViewLayoutAttributes * footerInfo = [self.collectionView layoutAttributesForSupplementaryElementOfKind:UICollectionElementKindSectionFooter atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0 ]];
[self.collectionView scrollRectToVisible:footerInfo.frame animated:YES];

这很好用,除了当 FRC 在下一个运行循环中添加项目时,collectionView 然后再次将页脚向下移动到屏幕外。

我不能只在框架中添加额外的高度,原因有两个:首先,扩展的矩形还没有在 controllerView 上,其次:如果它不是新行,我不需要那个空间并且它'会不必要地反弹回来。

我想我可以在插入完成后为将来的时间/运行循环安排滚动检查,但我希望可能会有更干净的东西。

4

1 回答 1

0

答案原来很简单:将滚动检查添加到 self.collectionView performBatchUpdates:completion 的完成块中:

于 2013-09-14T19:18:25.513 回答