SwiftyMediaGallery 0.1.1

SwiftyMediaGallery 0.1.1

nathan-hh 维护。



  • nathan-hh

SwiftyMediaGallery

CI Status Version License Platform Swift

演示

SwiftyMediaGallery Icon SwiftyMediaGallery Icon SwiftyMediaGallery Icon

要求

  • 📱iOS 13 或更高版本

目录

描述

在许多应用中,显示图片和视频是当前的需求。在努力寻找一个与原生iOS相册相同的良好库之后,我决定自己提供一个解决方案并帮助他人。SwiftyMediaGallery实现了这一点非常简单。该库包含基于POP(面向协议编程)的灵活公共API和一些内置功能

  • 异步图片下载
  • 在全局线程上渲染和解码图片(默认iOS在主线程上执行)
  • 自动磁盘/内存缓存(目前使用NSCache)
  • 导航图片过渡动画
  • 跟踪当前图片索引
  • 支持原生图片/视频,同时提供了一个开放API以添加更多项目
  • 如果需要,自动生成视频缩略图

用法

使用'Combine'库,你只需要传递AnyMediaItem数组到CurrentValueSubject,并用该模型初始化控制器

import Combine

let arrMediaItems = CurrentValueSubject <[AnyMediaItem], Never>([AnyMediaItem]())
let currentIndex = CurrentValueSubject <Int, Never>(0)
let viewController = MediaGalleryVC.initVC(array: arrMediaItems, currentIndex: currentIndex)

通过使用封装器'AnyMediaItem'创建类型擦除项目并将它们追加到数组中

let imageItem = ImageMediaItem(url: url.absoluteString)
let videoItem = VideoMediaItem(url: url.absoluteString)
let arr : [AnyMediaItem] = [AnyMediaItem(imageItem),AnyMediaItem(videoItem)]

然后更新CurrentValueSubject数组

arrMediaItems.send(arr)

使用占位符

当图片正在获取时,如果想让用户看到一些内容,占位符是可选的。

let placeholderVideo = UIImage(named: "PlaceholderImage")
let placeholderImage = UIImage(named: "PlaceholderVideo")

Configuration.setVideo(placeholder: placeholderVideo)
Configuration.setImage(placeholder: placeholderImage)

高级

设置导航图片过渡动画

viewController.setTransitionConfiguration(from: self, referenceImageView: {[weak self] in
        return self!.currentImage
    }, referenceImageViewFrameInTransitioningView: { [weak self] in
        self!.view.layoutIfNeeded()
        return self!.view.convert(self!.currentImage.frame, to: self!.view)
})
navigationController?.pushViewController(viewController, animated: true)

预取

滚动时自动预取

Configuration.prefetchUrls = 10 // default is 0

手动预取URL

Prefetcher.startFetching(urls:urls)
Prefetcher.cancelFetching(urls:urls)

缓存

内存中

Configuration.maxMemoryCacheMB = 100 // default is 10

磁盘上

Configuration.maxDiskCacheMB = 300  // default is 200

自动在磁盘上缓存视频(您必须增加缓存大小)

Configuration.shouldCacheVideo = true  // default is false

图像渲染最大尺寸

Configuration.imageRendererMaxSize = CGSize(width: 2400,height: 2400)  // default is   1200*1200

从特定索引显示项目

例如,画廊跳转到显示第10张图片的索引

只需更新currentIndex

currentIndex.send(10)

您还可以将索引回溯到原始视图控制器

private var subscriptions = [AnyCancellable]()

currentIndex.sink { (index) in
    //update VC
}.store(in: &subscriptions)

配置

设置画廊导航标题和backgroundColor

Configuration.title = "Best Gallery"
Configuration.backgroundColor = .white 

安装

CocoaPods

SwiftyMediaGallery 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:

pod 'SwiftyMediaGallery'

Swift 包管理器

您还可以使用 Swift 包管理器将 SwiftyMediaGallery 添加为项目的依赖项。为此,请使用以下 URL

https://github.com/arturdev/Unrealm.git

作者

nathan-hh, fdg

许可协议

SwiftyMediaGallery 在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE 文件。