SwiftyMediaGallery
演示
要求
-
📱 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 文件。