UICollectionView 是不是滚动到索引?
Posted
技术标签:
【中文标题】UICollectionView 是不是滚动到索引?【英文标题】:UICollectionView did scroll to index?UICollectionView 是否滚动到索引? 【发布时间】:2017-09-28 18:50:48 【问题描述】:伙计们,我需要你的帮助......我通过 UICollectionView 创建了一个自定义控件段......
CustomView.m
我有 5 个单元格,其中包含一个带有单元格标题的标签 为了通过 UILabel 的宽度获取单元格宽度,我以这种方式实现了 sizeForItemAtIndexPath 方法:
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
CGSize size = [[[self titleSection] objectAtIndex:indexPath.item] sizeWithAttributes:nil];
return CGSizeMake(size.width +35 , self.frame.size.height);
我还创建了一个 UIView,它具有指示选择了哪个单元格的光标功能。 为了动画光标(UIView),我以这种方式实现:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
NSIndexPath *newIndexPath = [NSIndexPath indexPathForItem:indexPath.item inSection:0];
[collectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
UDPassData *data = [UDPassData sharedInstance];
[data.sectionContentCollection scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionNone animated:YES];
if (indexPath == newIndexPath)
[collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
UICollectionViewLayoutAttributes *attributes = [collectionView layoutAttributesForItemAtIndexPath:newIndexPath];
CGRect cellFrameInSuperview = [collectionView convertRect:attributes.frame toView:collectionView];
data.index = cellFrameInSuperview;
[UIView animateWithDuration:.4 delay:0 usingSpringWithDamping:1 initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^
_horizontalBar.frame = CGRectMake(cellFrameInSuperview.origin.x, _horizontalBar.frame.origin.y, cellFrameInSuperview.size.width , 3);
completion:nil];
UICollectionViewController.m
现在在另一个 ViewController 我有另一个带有水平滚动的 UICollectionView 与段控件共享索引路径,这样即使使用自定义段控件我也可以控制 collectionView 的滚动。到这里一切正常,我设法得到一切,但我只是有一个问题..
uicollection 视图滚动时段控件滑块不移动...总之,如果collectionView 在单元格二中,自定义段控件光标应该移动到我创建的段控件中的第二个单元格.. 我希望能够解释
编辑:我想要得到的是我从 Youtube 应用程序中看到的。顶部菜单...
我正在使用 2 个 collectionView 执行此操作。
第一个collectionView是菜单(内置在一个UIView自定义类中)
第二个collectionView在页面之间浏览,位于一个外部的UIViewController中
【问题讨论】:
我很确定你只需要注意速度为零? 我不明白你的意思......我不知道如何通过另一个类的scrollViewDidScroll函数来控制段控制滑块 我不确定我是否理解您的问题,但请实现didScroll:
的 UICollectionView
委托(继承到 UIScrollView
,或您找到的任何其他 UIScrollViewDelegate
方法适当的),当它发生时,您可以滚动或更改另一个。
@Larme 可以和你简单聊聊吗?
***.com/questions/30398339/… ***.com/questions/9207474/… ***.com/questions/17303772/… ?
【参考方案1】:
请确保reload
collectionView 数据源以更新它。
[self.collection1 performBatchUpdates:^
[collectionView reloadData]
completion:nil];
【讨论】:
以上是关于UICollectionView 是不是滚动到索引?的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView:在指定索引处添加项目并滚动到该项目
停止滚动时获取 UICollectionView 的项目(或索引)
由于索引超出范围,uitableviewcell 滚动中的 uicollectionview 将崩溃
启用collectionview分页时将collection view滚动到索引