欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

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

项目介绍:

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"

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Swift图片浏览器,经过一年多维护,已基本稳定
分享到: 更多 (0)