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);
}
}