当 CollectionView 图像缩放时如何返回

Posted

技术标签:

【中文标题】当 CollectionView 图像缩放时如何返回【英文标题】:How to Back when CollectionView Image was Zoom 【发布时间】:2014-10-30 14:00:37 【问题描述】:

在这里我放大 Collectionview 单元格图像,当它被选中但现在我想在内部图像视图中进行触摸然后返回到集合视图如何可能请给我解决方案

这是我的代码

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

[collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionCenteredHorizontally];
[self zoomToSelectedImage:indexPath];

-(void)zoomToSelectedImage:(NSIndexPath *)indexPath

NSDictionary *dict = [self.imagesa objectAtIndex:indexPath.item];
NSString *img=[dict valueForKey:@"link"];

UIImageView *zoomImage = [[UIImageView alloc] init];
[zoomImage sd_setImageWithURL:[NSURL URLWithString:img]];
zoomImage.contentMode = UIViewContentModeScaleAspectFit;
zoomImage.backgroundColor=[UIColor grayColor];
zoomImage.userInteractionEnabled=YES;
UIPinchGestureRecognizer *pinchgesture=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureDetected:)];
[pinchgesture setDelegate:self];
[zoomImage addGestureRecognizer:pinchgesture];

UIPanGestureRecognizer *pangausture=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGestureDetected:)];
[pangausture setDelegate:self];
[zoomImage addGestureRecognizer:pangausture];
self.imagecollection.hidden=TRUE;


CGRect zoomFrameTo = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
UICollectionViewCell *cellToZoom =(UICollectionViewCell *)[self.imagecollection cellForItemAtIndexPath:indexPath];
CGRect zoomFrameFrom = cellToZoom.frame;
[self.view addSubview:zoomImage];
zoomImage.frame = zoomFrameFrom;
zoomImage.alpha = 0.2;
[UIView animateWithDuration:0.01 animations:
 ^
     zoomImage.frame = zoomFrameTo;
     zoomImage.alpha = 1;
     completion:nil];

这里的 Imagecollection 是我的 Collectionview。

【问题讨论】:

【参考方案1】:

您没有使用标准方法缩放 collectionView:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath    
// [self.collectionView.collectionViewLayout invalidateLayout];

在您的情况下,您以与单元格中相同的内容全屏创建UIImageView,并将此UIImageView 添加为subview 以涵盖所有内容。因此,如果您将zoomImage.alpha 动画化为0 并取消隐藏collectionview,您将得到您想要的。完成后不要忘记removeFromSuperview zoomImage。

【讨论】:

【参考方案2】:

您可以添加点击手势识别器,甚至可以添加一个透明按钮,覆盖与缩放图像相同的区域。正如#kabarga 所说,不要忘记 removeFromSuperview 以摆脱您的 imageView。

【讨论】:

以上是关于当 CollectionView 图像缩放时如何返回的主要内容,如果未能解决你的问题,请参考以下文章

iOS:用于加载图像的 CollectionView 垂直分页

滚动时collectionview更改单元格背景图像

如何在不重新加载图像的情况下重新加载 collectionview 单元格

按下缩放按钮时如何缩放滚动视图的图像?

如何在 CollectionView iOS 中停止自动重新加载和刷新图像

collectionView 中的图像在滚动时发生变化