这次的封装,最终效果就是可以滑动查看所有图片,单击返回、双击放大/缩小、捏合放大/缩小的手势。在此,封装了三个类。如下所示:
第一个类(我们直接要使用的类):
#import "ImageScanCell.h"
@interface ImageScanController : BaseController
//1.图片数组 (一组图片, 是给collectionView现实的)
@property(nonatomic, strong)NSArray * imageURLStringArray;
//2.当前是 哪个item被点击,就显示哪个item的图片
//如何得知哪个item'被点击, 传递 当前item的索引位置
@property(nonatomic, strong)NSIndexPath * selectedIndexPath;
@property (nonatomic,assign) NSInteger currentPage;
@end
#import "ImageScanController.h"
@interface ImageScanController ()<UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
{
//子视图
UICollectionView * _collectionView;
//取非
BOOL _isHidden;
// 需要下载的图片
UIImage * _myImage;
UIPageControl *_page;
}
@end
static NSString * imageScanID = @"ImageScanCell";
@implementation ImageScanController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"图片浏览";
self.view.backgroundColor = [UIColor whiteColor];
//创建子视图
[self _loadSubViews];
//创建 下载的按钮
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"img_download_p"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(downloadImageAction:) forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake(kScreenWidth - 60 - 20, kScreenHeight - 60 - 64 - 30, 60, 60);
[self.view addSubview:button];
//注册成为kNavigationBarHideOrNot这条通知的观察者
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hideNavigationOrNot:) name:@"HideOrNot" object:nil];
}
#pragma mark - button action
- (void)downloadImageAction:(UIButton *)sender{
//实现下载 图片 到相册 (保存)
//C语言有一个函数
//参数一:要保存哪张图片
//参数二:回调目标, 当这个函数走完之后,会由 哪个对象(当前这个参数), 去调用一个什么方法(后面参数三的方法)
//参数三:@selector 方法签名, 是要被调用的方法的名字(文档中有给定的方法)
//参数四:指 要传递的信息,一般是NULL
//回调方法注意看文档。
UIImageWriteToSavedPhotosAlbum(_myImage, self, @selector(image: didFinishSavingWithError:contextInfo:), NULL);
}