UICollectionView确实滚动到索引?

时间:2017-09-28 18:50:48

标签: ios objective-c xcode uiscrollview uicollectionview

伙计我需要你的帮助......我通过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位于单元格2中,则自定义段控件光标应移动到我创建的段控件中的第二个单元格。我希望能够解释

enter image description here

编辑:我想从Youtube应用程序中看到的是这个。顶级菜单......

enter image description here

我正在用2个collectionView做这个。

第一个collectionView是菜单(内置于UIView自定义类中)

第二个collectionView在页面之间浏览,位于外部UIViewController

1 个答案:

答案 0 :(得分:1)

确保reload collectionView数据源以便重新开始。

[self.collection1 performBatchUpdates:^{
   [collectionView reloadData]
 } completion:nil];