图片浏览器

  • 使用的三方 ZLPhoto

  • 实现了什么: 在普通view中,和collectView中加入了图片浏览器

  • 首先需要导入的头文件

objectivec#import "ZLPhoto.h" // 图片浏览器

定义一个数组,存放的是图片浏览器的模型数据

/** 图片浏览器的数据 */@property (nonatomic, strong) NSMutableArray  *photoBrowserArray;

为图片浏览器的模型赋值:

- (void)setModel:(LYShowSuccessCaseModel *)model
{
    _model = model;
    
    // 找到所有img,依次赋值
    for (int i = 0; i < model.carImgUrlArray.count; i++) {
        UIImageView *imgView = (UIImageView *)[self viewWithTag:1000+i];
        
        imgView.image = [UIImage imageWithOriRenderImg:model.carImgUrlArray[i]];
        
        // 图片浏览器的专用模型
        ZLPhotoPickerBrowserPhoto *photo = [ZLPhotoPickerBrowserPhoto photoAnyImageObjWith:[UIImage imageWithOriRenderImg:model.carImgUrlArray[i]]];
        photo.toView = imgView;
        [self.photoBrowserArray addObject:photo];
    }
}

photo.toView = imgView这句很重要,是把UIImageView的位置传给了模型,如果模型中缺少这一个数据,常见的问题就是黑屏,不能实现图片浏览器

  • 最后,在图片的点击方法中,实现图片浏览器
#pragma mark - 图片的手势,图片浏览器
- (void)imgAction:(UITapGestureRecognizer *)sender
{
    ZLPhotoPickerBrowserViewController *pickerBrowser = [[ZLPhotoPickerBrowserViewController alloc] init];
    pickerBrowser.photos = self.photoBrowserArray; // 数据源
    pickerBrowser.editing = NO; // 能否编辑
    pickerBrowser.currentIndex = [sender view].tag-1000; // 当前选中的值
    [pickerBrowser showPickerVc:self.vc]; // 展示
}

以上是在一个view中添加的图片浏览器

当我们需要使用collect中的图片做图片浏览器的时候,我们的方法还是,
  • 首先定义一个数组,用来专门存放浏览器数据模型

为模型赋值放在了 collectionView:cellForItemAtIndexPath:方法中

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    LYMoreCarCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
    cell.imgView.image = [UIImage imageWithOriRenderImg:self.imgArray[indexPath.item]];
    
    // 图片浏览器的专用模型
    ZLPhotoPickerBrowserPhoto *photo = [ZLPhotoPickerBrowserPhoto photoAnyImageObjWith:[UIImage imageWithOriRenderImg:self.imgArray[indexPath.item]]];
    photo.toView = cell.imgView;
    [self.photoBrowserArray addObject:photo];
    return cell;
}

在点击cell的时候,放大图片,进入图片浏览器

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"点击了首页成功案例的第%ld张图片", indexPath.row);
    ZLPhotoPickerBrowserViewController *pickerBrowser = [[ZLPhotoPickerBrowserViewController alloc] init];
    pickerBrowser.photos = self.photoBrowserArray; // 数据源
    pickerBrowser.editing = NO; // 能否编辑
    pickerBrowser.currentIndex = indexPath.row; // 当前选中的值
    [pickerBrowser showPickerVc:self]; // 展示
}
1.gif
  • 上图中第一个界面是普通的view,第二个界面是用collectView

你可能感兴趣的:(图片浏览器)