RedPanda 0.1.20

RedPanda 0.1.20

omarHassan 维护。



 
依赖项
ReachabilitySwift~> 4.3.0
RealmSwift>= 0
 

RedPanda 0.1.20

  • 作者:
  • omar hassan

RedPanda

Image loading and caching into tableViews and collectionViews library for iOS written in Swift

特性
依赖项
要求
安装
使用方法
许可
待办事项

特性

  • TableView/collectionView convenience loader
    • 使用 url-indexPath-tag 进行请求哈希以加载 tableView 和 collectionView 中的图像
    • 忽略正在处理或已处理且无效的重复调用
    • 在网络错误或互联网连接错误导致连接恢复时重试失败的请求
    • 对请求进行时间戳处理以应对刷新/更新集合,以及避免错误的回调执行
    • 线程安全的内存和磁盘缓存
  • 独立组件,可分别使用
    • 磁盘缓存和内存缓存
    • 可变内存缓存
    • 具有访问磁盘缓存的图像加载器
    • 可选删除所有磁盘缓存的图像或仅删除在特定日期之后访问的图像

依赖项

  • ReachabilitySwift
  • RealmSwift

要求

  • iOs 12.0+
  • Xcode 10.1+
  • Swift 4.2+

安装

通过CocoaPods获取
pod 'RedPanda'

用法

   import ImageCollectionLoader

  • 将图像加载到tableViews或collectionViews
    • 请求日期是此次调用的时间戳,调用者可以决定是否可以使用
      结果图像(例如:刷新tableView或添加/删除行会更改indexpath以绘制图像)
    • 标签用于同一indexpath中有多个URL相同的图像时,以避免加载第二个图像(例如:可能是卡片和logo)
    • 从cellForRow请求图像是安全的,因为重复的请求会被丢弃(请求通过URL、indexPath和标签进行哈希)
    • 失败状态
      • case currentlyLoading:已请求相同indexpath - 标签 - url的另一个请求,现在正在加载
      • case invalid:请求的URL之前已被加载,但图像解析失败
      • case processing:请求正在处理
   let imageCollectionLoader = ImageCollectionLoaderBuilder().defaultImp(ramMaxItemsCount: 60)
   imageCollectionLoader.requestImage(requestDate: Date(), url: element, indexPath: indexPath, tag: "card", successHandler:         
   {
                image , index , date in
                guard let visibleCell = tableView.cellForRow(at: index) as? cell else {return}
                visibleCell.iv.image = image
            }, failedHandler: {
               failedRequest,failedImage,requestState in
                print(failedRequest)
                print(failedImage)
                print(requestState)
            })
            

  • 分别加载图像
     let imageLoader = ImageLoaderBuilder().concrete(ramMaxItemsCount: 50).getImageFrom(urlString: "testUrl", completion: {
            image in
        }, fail: {
            failMessage , error in 
        })
        
  • 清除缓存
  DiskCacheBuilder().concrete().deleteAll()
  DiskCacheBuilder().concrete().deleteWith(minLastAccessDate: Date(), completion: {
          success in
          
       })
     
  

许可

MIT

待办事项

  • 将网络和可达性监控器做成一个独立的组件,包括可注入的配置,其中包括
    • 最大尝试次数
    • 重试间隔
  • 对URL的可注入预处理以使时间戳清除动态化
  • 将可注入目录注入到DiskCache和DiskCacheFileSystem
  • 为spawning localServer添加测试,并为同时运行多个ImageCollectionLoader实例添加测试
  • 公开SyncedAccessHashableCollection并改进其api