登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

Swift图片浏览器,经过一年多维护,已基本稳定

[复制链接]
来自: JiongXing 分类: iOS精品源码 上传时间: 2018-5-16 01:33:09
Tag:

项目介绍:

JXPhotoBrowser

Carthage compatible

Github托管地址: https://github.com/JiongXing/PhotoBrowser

特性

  • 支持缩放式转场动画

  • 支持淡入淡出式转场动画

  • 支持下滑手势渐变关闭浏览器

  • 支持初始图、大图和原图三个级别

  • 支持自定义图片加载器

  • 支持浏览 GIF 图片

  • 支持浏览本地图片

  • 支持浏览中修改数据源,刷新浏览器

  • 支持在浏览场景自由添加视图

  • 支持光点样式的页码指示

  • 支持数字样式的页码指示

  • [支持长按返回当前图片对象

  • [支持屏幕旋转

  • 支持插件开发,自由扩展功能

效果

Introduction

使用

初始化 & 展示

类方法直接打开图片浏览器:

// 直接打开图片浏览器
// delegate: 协议代理
// originPageIndex: 打开时的初始页码
PhotoBrowser.show(delegate: self, originPageIndex: indexPath.item)

也可以先创建浏览器,配置好需要的特性,再打开:

// 创建图片浏览器
let browser = PhotoBrowser(){
// 提供两种动画效果:缩放`.scale`和渐变`.fade`。
browser.animationType = .scale
// 浏览器协议实现者
browser.photoBrowserDelegate = self
// 装配页码指示器插件,提供了两种PageControl实现,若需要其它样式,可参照着自由定制
// 光点型页码指示器
browser.plugins.append(DefaultPageControlPlugin())
// 数字型页码指示器
browser.plugins.append(NumberPageControlPlugin())
// 指定打开图片组中的哪张
browser.originPageIndex = index
// 展示
self.present(browser, animated: true, completion: nil)}

如果想在浏览场景添加一些视图,你可以自己开发插件。
例子给出了添加图片描述和图片删除按钮的做法:

let browser = PhotoBrowser()
// 装配附加视图插件
weak var weakBrowser = browser
let overlayPlugin = OverlayPlugin()
// 点击删除按钮回调
overlayPlugin.didTouchDeleteButton = { [weak self] index in
    self?.thumbnailImageUrls.remove(at: index)
    self?.highQualityImageUrls.remove(at: index)
    self?.collectionView?.reloadData()
    weakBrowser?.reloadData()
}
browser.plugins.append(overlayPlugin)

图片浏览器协议

必选协议方法:

/// 共有多少张图片
func numberOfPhotos(in photoBrowser: PhotoBrowser) -> Int {
    return thumbnailImageUrls.count
}

/// 各缩略图图片,也是图片加载完成前的 placeholder
func photoBrowser(_ photoBrowser: PhotoBrowser, originImageForIndex index: Int) -> UIImage? {
    let cell = collectionView?.cellForItem(at: IndexPath(item: index, section: 0)) as? MomentsPhotoCollectionViewCell
    return cell?.imageView.image
}

使用缩放式动画的必选协议方法:

/// 各缩略图所在 view
func photoBrowser(_ photoBrowser: PhotoBrowser, originViewForIndex index: Int) -> UIView? {
    return collectionView?.cellForItem(at: IndexPath(item: index, section: 0))
}

可选协议方法:

/// 高清图
func photoBrowser(_ photoBrowser: PhotoBrowser, highQualityUrlForIndex index: Int) -> URL? {
    return URL(string: highQualityImageUrls[index])
}

/// 原图
func photoBrowser(_ photoBrowser: PhotoBrowser, rawUrlForIndex index: Int) -> URL? {
    return nil
}

/// 加载本地图片,本地图片的展示将优先于网络图片
func photoBrowser(_ photoBrowser: PhotoBrowser, localImageForIndex index: Int) -> UIImage? {
    return nil
}

/// 长按图片。你可以在此处得到当前图片,并可以做些弹个窗,保存图片等操作
func photoBrowser(_ photoBrowser: PhotoBrowser, didLongPressForIndex index: Int, image: UIImage) {
    let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
    let saveImageAction = UIAlertAction(title: "保存图片", style: .default) { (_) in
        print("保存图片:\(image)")
    }
    let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
        
    actionSheet.addAction(saveImageAction)
    actionSheet.addAction(cancelAction)
    photoBrowser.present(actionSheet, animated: true, completion: nil)
}

初始参数

/// 展示,传入完整参数
/// - parameter animationType: 转场动画类型,默认为缩放动画`scale`
/// - parameter delegate: 浏览器协议代理
/// - parameter photoLoader: 网络图片加载器,默认 KingfisherPhotoLoader
/// - parameter plugins: 插件组,默认加载一个光点型页码指示器
/// - parameter originPageIndex: 打开时的初始页码,第一页为 0.
/// - parameter fromViewController: 基于哪个 ViewController 执行 present。默认视图顶层 VC。
public class func show(animationType: AnimationType = .scale,
                       delegate: PhotoBrowserDelegate,
                       photoLoader: PhotoLoader? = KingfisherPhotoLoader(),
                       plugins: [PhotoBrowserPlugin] = [DefaultPageControlPlugin()],
                       originPageIndex: Int,
                       fromViewController: UIViewController? = TopMostViewControllerGetter.topMost)

Requirements

  • iOS 8.0+

  • Swift 4

Installation

CocoaPods

更新你的本地仓库以同步最新版本

pod repo update

在你项目的Podfile中配置

pod 'JXPhotoBrowser'

Carthage

本库依赖Kingfisher,需一并引入。在你项目的Cartfile中配置

github "onevcat/Kingfisher"
github "JiongXing/PhotoBrowser"

相关源码推荐:

我来说两句
*滑动验证:
所有评论(5)
AlonMessi 2018-5-17 09:53:25
code4app好的内容真的很多~赞
回复
天天bug 2018-5-17 09:53:35
我是来学习的
回复
ff12345 2018-5-17 09:53:42
感谢分享,楼主V5~
回复
kengsir 2018-5-17 09:53:54
帮帮顶顶!!
回复
Yf8546 2018-5-17 09:54:25
code4app好的代码demo真的很多,谢谢啦~
回复
pp美景 2018-5-17 09:54:41
膜拜大神~
回复
code4app热心网友 2018-5-17 13:47:23
很给力,Code4App有你更精彩!
回复
code4app热心网友 2018-5-18 09:43:53
正需要啊,感谢楼主无私分享!
回复
宋朝 2018-5-18 09:45:19
很给力,Code4App有你更精彩!
回复
提取码:  下载次数:12 状态:已购或VIP 售价:0(原价:15)金钱 下载权限:初级码农 
1046 1 12
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表