我有一个标准的FlowLayout UICollectionView(垂直滚动,单个部分,固定大小的项目,但是可变数量的列(例如iphone中的2个横向v 1在horiz v 3或4在ipad上)。我正在使用NSFetchedResultsController管理从核心数据显示的项目。
我在页脚补充中添加了一个添加按钮以添加新项目。当用户按下添加按钮时,我自然想要添加一个项目,但是我希望添加按钮保留在屏幕上(必要时向上滚动),这样他们就可以轻松地再次按下它。
我目前检查addItem例程:
UICollectionViewLayoutAttributes * footerInfo = [self.collectionView layoutAttributesForSupplementaryElementOfKind:UICollectionElementKindSectionFooter atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0 ]];
[self.collectionView scrollRectToVisible:footerInfo.frame animated:YES];
这很有效,除了当FRC在下一个runloop上添加项目时,collectionView会再次将页脚向下移动到屏幕外。
我不能只为框架添加额外的一行高度,原因有两个:第一,扩展的rect不在controllerView上,第二:如果它不是新行,我不需要那个空格并且它会不必要地反弹。
我想我可以在插入完成后为未来的时间/ runloop安排滚动检查,但我希望可能有更清洁的东西。
答案 0 :(得分:0)
答案结果很简单:将滚动检查添加到self.collectionView performBatchUpdates的完成块:完成: