2018-03-09

UICollectionView在一个页面中,既有轮播图 又有 UICollectionView时,需要点击轮播图

当跳入新页面UICollectionViewController时,要初始化一个UICollectionViewFlowLayout,不然会崩溃。


 UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];


            ZExchangeCollectVC* basevc = [[ZExchangeCollectVCalloc]initWithCollectionViewLayout:flowLayout];


            [self.navigationController pushViewController:basevc animated:NO];


要求 在一个页面中,既有轮播图 又有 UICollectionView时,需要点击轮播图。

说明:轮播图使用SDCycleScrollView

实现:

尝试 1 使用轮播图 + UICollectionView,这样的页面并不是全屏滑动。

2如果把轮播图注册成UICollectionView的头部,点击没有反应,因为SDCycleScrollView使用的也是UICollectionViewCell,它的滑动方向是横向UICollectionViewScrollDirectionHorizontal。

内部代码

- (void)cycleScrollView:(SDCycleScrollView*)cycleScrollView didSelectItemAtIndex:(NSInteger)index;

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

{

    if ([self.delegate respondsToSelector:@selector(cycleScrollView:didSelectItemAtIndex:)]) {

        [self.delegate cycleScrollView:self didSelectItemAtIndex:indexPath.item % self.imagePathsGroup.count];

    }

    if (self.clickItemOperationBlock) {

        self.clickItemOperationBlock(indexPath.item % self.imagePathsGroup.count);

    }

}

3使用 UIScrollView上面加图片,定时器滚动,图片点击手势。

做出来 滚动很不好看,没有SDCycleScrollView滑动自然。

4 轮播图注册成UICollectionView的头部,修改SDCycleScrollView代码。

cell里面的imageview添加手势。 这样就能实现点击了。

  UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(zimgClick:)];

    [cell.imageView addGestureRecognizer:tap];

    cell.imageView.tag= indexPath.item;

    returncell;

}

- (void)zimgClick:(UITapGestureRecognizer *)tap{

    if([self.delegaterespondsToSelector:@selector(cycleScrollView:didSelectItemAtIndex:)]) {

        [self.delegate cycleScrollView:self didSelectItemAtIndex:tap.view.tag % self.imagePathsGroup.count];

    }

    if (self.clickItemOperationBlock) {

        self.clickItemOperationBlock(tap.view.tag % self.imagePathsGroup.count);

    }

}

你可能感兴趣的:(2018-03-09)