我有一个标准的 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 上,其次:如果它不是新行,我不需要那个空间并且它'会不必要地反弹回来。
我想我可以在插入完成后为将来的时间/运行循环安排滚动检查,但我希望可能会有更干净的东西。