【问题收集】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 滚动到顶部或者指定位置

你可能感兴趣的:(【问题收集】UICollectionView:设置contentOffset滚动到的位置不准确)