gpt4 book ai didi

ios - scrollToItemAtIndexPath 无法正常工作

转载 作者:可可西里 更新时间:2023-11-01 03:18:43 32 4
gpt4 key购买 nike

我正在尝试使用 UICollectionView 实现照片库。该设置类似于此 tutorial 中的设置:单元格与 Collection View 一样大,因此您一次只能看到一张图片。启用分页,因此您可以逐张滚动浏览图库。到目前为止一切正常。

我还想在设备旋转到横向时保留该设置。关于单元格/图像大小,它工作正常。但是就像前面提到的教程中描述的那样, Collection View 被旋转到两张图片之间的某个奇怪位置。

我的目标是让 Collection View 在旋转后显示与旋转前相同的单元格。就像在这个post .

我尝试解决这个问题:

在旋转之前,我将当前可见项的 indexpath 保存到属性中,如下所示:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation     duration:(NSTimeInterval)duration {
NSArray *visibleItems = [self.galleryCollectionView indexPathsForVisibleItems];
self.currentIndexPath = [visibleItems lastObject];
[self.galleryCollectionView.collectionViewLayout invalidateLayout];
}

在旋转之后,我尝试像这样滚动到该项目:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[self.galleryCollectionView scrollToItemAtIndexPath:self.currentIndexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}

不幸的是,这仅适用于集合中的前两项,如果我滚动到第五项并旋转设备,它会再次旋转到某个奇怪的单元格间位置。

知道我做错了什么吗?

最佳答案

我在 iOS 6 上遇到完全相同的问题,它在 iOS 7 上已修复。这是适用于 iOS 6 的解决方法。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation];

// workaround iOS 6 collection view rotation bug: UICollectionView is not scrolled to the correct index after rotation
[self.collectionView setContentOffset:[self.collectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForRow:self.currentPage inSection:0]].frame.origin animated:NO];
}

关于ios - scrollToItemAtIndexPath 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977012/

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