【问题收集】UICollectionView:设置contentOffset滚动到的位置不准确

场景

Paste_Image.png

上面的标签栏是使用 UICollectionView 实现的,需要实现的效果是:

规则:
上面的标签栏,选中的标签显示中间,偏左/偏右的标签由于如果移动到中间,就会使左边/右边空出来,因此显示collectionView顶在最左/最右即可,如下图(本例子中有 0 到 9 标题的标签)

Paste_Image.png

在切换下面的控制器界面时,上面的标签会跟随着切换到选中的标签并进行滚动(满足上面的规则滚动)

滚动代码:

1,使用 contentOffset 属性设置
// 滚动到最右代码
[self.collectionView setContentOffset:CGPointMake([self widthOfCollectionView] - CGRectGetWidth(self.frame), 0) animated:YES];

animated 设置为 YES 时:滚动的位置并不准确
设置 NO 时:能够准确滚动

2,通过 - (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated; 方法滚动
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:self.labelCount-1 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO];

animated 设置为 YES 时:滚动的位置并不准确
设置 NO 时:能够准确滚动


总结:

因此,在 UIScrollView , UITableView , UICollectionView 设置进行滚动时,如果设置 animated 设置为 YES 不能够准确的滚动时,设置成 NO 尝试

使用的场景还有:

tableView 滚动到顶部或者指定位置

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容