YUImageViewer
一款类似于微信QQ的大图查看器
要求
- Xcode 8
- Swift 3
- iOS8 以及更新的版本
特点
- 支持手势放大、缩小
- 支持横竖屏切换
- 不支持 gif 图片
- 类似于 QQ 微信的效果
安装
pod YUImageViewer
用法
let model1=YUImageViewerModel()
//也就是那张小图。可选。nil值将以淡入淡出的方式显示
model1.placeholder=imageView.image
//frame是点击View相对于当前ViewController的!
//若该View的superView不是ViewController的View。请使用convert函数转换。nil值将以淡入淡出的效果显示
model1.frame=view.convert(cell.imageView.frame, from: cell.contentView)
//url(option)
model1.url=URL.init(string: "http://...")
let model2=YUImageViewerModel()
model2.placeholder=...
mdoel2.frame=...
let models=[model1,model2]
//currentSelect表示一打开就显示第几张图片
let vc=YUImageViewerViewController(models: models, currentSelect: index delegate: self)
present(vc, animated: true, completion: nil)
该框架不自带图片下载功能。您还需要使用项目中已有的图片下载框架来实现图片下载功能。
YUImageViewerViewControllerDelegate
下载图片的代理。必須實現。您可以在您的項目中选择您喜歡的圖片下載框架。下載完成后,請執行 complete() 這個 closure。傳遞 true 表示下載成功,傳遞 false 表示下載失敗
func imageViewerViewController(_ viewController: YUImageViewerViewController, downloadImageAt index: Int, imageView: UIImageView, model: YUImageViewerModel, complete: @escaping DownloadCompleteBlock) {
//请使用项目中的图片下载框架进行下载。这里只是简单的示例
DispatchQueue.global().async {
do{
let data=try Data.init(contentsOf: model.url!)
DispatchQueue.main.async(execute: {
imageView.image=UIImage.init(data: data)
complete(true) //下载成功调用
})
}
catch
{
complete(false)//下载失败调用
}
}
// 使用SDWebImage下载代码示例
/*
imageView.sd_setImage(with: models[index].url, placeholderImage: models[index].placeholder, options: []) { (image, error, type, url) in
if let _=error
{
complete(false)
//若下载失败可以在这里添加提示的代码。框架并不会提示
}else
{
complete(true)
}
}
*/
}
其他項目根據需要決定是否實現
func imageViewerViewController(_ viewController: YUImageViewerViewController, onLongPressAt index: Int, image: UIImage?, model: YUImageViewerModel) {
//在这里。你可以对长按的图片进行操作。比如保存图片或者分享
print("长按图片啦:\(index)")
}
func imageViewerViewController(_ viewController: YUImageViewerViewController, didShowAt index: Int, model: YUImageViewerModel) {
}
func imageViewerViewController(_ viewController: YUImageViewerViewController, willShowAt index: Int, model: YUImageViewerModel) {
}
func imageViewerViewController(_ viewController: YUImageViewerViewController, didDismissAt index: Int, model: YUImageViewerModel) {
}
func imageViewerViewController(_ viewController: YUImageViewerViewController, willDismissAt index: Int, model: YUImageViewerModel) {
}
Contact
QQ:535920015
如果您在使用過程中遇到任何問題或有任何建議,請通過 QQ 或在 github 中提出 issue 以與我們聯繫
License
YUImageViewer 是基於 MIT 协議授權。