gpt4 book ai didi

ios - 无尽的 UICollectionView 幻灯片 + scrollToItemAtIndexPath

转载 作者:行者123 更新时间:2023-11-29 02:36:01 27 4
gpt4 key购买 nike

我们有一个充满整个屏幕的 UICollectionView 来模拟全屏照片幻灯片。 Collection View 的数据由 NSFetchedResultsController 支持。在任何给定时间, Collection View 中只有一个单元格显示在屏幕上。还有一个可重复的 NSTimer 设置为 5 秒的间隔,它触发一个方法“gotoNextPage”,该方法调用 scrollToItemAtIndexPath 到下一个获取的对象(下一个 UICollectionView 单元格,下一个幻灯片照片)。这是一个平稳的过渡。当我们到达幻灯片的结尾时,我们希望无缝地前进到第一张照片并重新开始幻灯片。当然,当我们将 scrollToItemAtIndexPath 返回到第一张照片时,它会快速向后滚动(取决于我们有多少获取的对象)。无论您是在幻灯片放映/UICollectionView 的开头、中间还是结尾,我们都希望前进动画保持一致。

有没有人有解决这个问题的创造性方法?

谢谢

最佳答案

您可以让索引路径项目编号不断增加,然后将您的 cellForItemAtIndexPath 和其他表逻辑基于除以照片数后的余数。所以你可以编码:

NSUInteger photoCount  = [[self.fetchedResultsController fetchedObjects] count];
NSIndexPath *fetchIndexPath = [NSIndexPath indexPathForItem:(indexPath.item % photoCount) inSection:0];
Photo *myPhoto = [self.fetchedResultsController objectAtIndexPath:fetchIndexPath];

类似的方法应该适用于其他 tableView/NSFetchedResultsController 数据源/委托(delegate)方法。 编辑正如您在评论中指出的那样,您必须将 numberOfItemsInSection 设置为非常大的数字(NSIntegerMax?)。

或者……您可以修改 cellForItemAtIndexPath,以便在最后一张照片之后有一个额外的单元格,其中包含与第 0 行相同的照片。

Photo *myPhoto
NSUInteger photoCount = [[self.fetchedResultsController fetchedObjects] count];
if (indexPath.item = photoCount) {
myPhoto = [self.fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];
} else {
myPhoto = [self.fetchedResultsController objectAtIndexPath:indexPath];
}
... configure cell...

您必须修改 numberOfItemsInSection 才能返回 photoCount+1

向前滚动到这个新的最终单元格后,立即滚动到第一个单元格但没有动画。由于第一个和最后一个单元格具有相同的照片,因此用户不会看到任何过渡。然后您可以恢复为使用动画向前滚动。

if (currentItem == photoCount -1) {
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:photoCount inSection:0] atScrollPosition:<your preference> animated:NO];
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] atScrollPosition:<your preference> animated:YES];
} else {
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:(currentItem+1) inSection:0] atScrollPosition:<your preference> animated:YES];
}

关于ios - 无尽的 UICollectionView 幻灯片 + scrollToItemAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com