使用的三方 ZLPhoto
实现了什么: 在普通view中,和collectView中加入了图片浏览器
首先需要导入的头文件
objectivec#import "ZLPhoto.h" // 图片浏览器
定义一个数组,存放的是图片浏览器的模型数据
/** 图片浏览器的数据 */@property (nonatomic, strong) NSMutableArray <ZLPhotoPickerBrowserPhoto *> *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]; // 展示
}
- 上图中第一个界面是普通的view,第二个界面是用collectView