KFSwiftImageLoader 4.0.0

KFSwiftImageLoader 4.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间上次发布2019年11月
SPM支持SPM

Kiavash Faisali维护。



  • 作者:
  • Kiavash Faisali

KFSwiftImageLoader

KFSwiftImageLoader是一个高性能、轻量级、节能的纯Swift异步网页图片加载器,适用于iOS和 Watch,并具有内存和磁盘缓存。

这是世界上第一个针对 Watch优化的异步图片加载器,具有WKInterfaceImage扩展以及通过WKInterfaceDevice智能自动缓存处理的能力。

请还请查看KFWatchKitAnimations,它通过记录iOS模拟器中的动画来记录 Watch上精美的60 FPS动画的绝佳方法。

注:

特性:

  • WKInterfaceImage、UIImageView、UIButton和MKAnnotationView的异步网页图片加载扩展。
  • 内存和磁盘缓存,防止每次请求或应用重启时重复下载图片,具有自动缓存管理以优化资源使用。
  • 通过只对引用相同URL字符串的多个来源发送单个HTTP/HTTPS请求下载图片,注册它们作为请求的观察者以提高能源效率。
  • 通过利用最新的现代技术,如Swift 5.1、URLSession和GCD,实现最大性能。

KFSwiftImageLoader需求

  • Xcode 11.0+
  • iOS 12.0+
  • watchOS 6.0+

CocoaPods

为了确保您能及时获取KFSwiftImageLoader的最新版本,建议您使用CocoaPods。

为优化CocoaPods 1.8.4+,需要先运行以下命令

sudo gem install cocoapods

将以下内容添加到您的Podfile中

platform :ios, '12.0'

pod 'KFSwiftImageLoader', '~> 4.0'

在需要使用KFSwiftImageLoader的任何地方都需要导入它

import KFSwiftImageLoader

示例用法

UIImageView

imageView.loadImage(urlString: urlString)

是的,真的很简单。只需一键即可完成。在上面的示例中,"占位符"和"完成"输入被忽略,因此它们默认为nil。我们可以按以下方式包含它们

imageView.loadImage(urlString: urlString, placeholder: UIImage(named: "KiavashFaisali")) {
    (success, error) in
    
    // 'success' is a 'Bool' indicating success or failure.
    // 'error' is an 'Error?' containing the error (if any) when 'success' is 'false'.
}

为了提高灵活性,有几种不同的方法可以加载图片。以下是所有这些方法的签名

func loadImage(_ urlString: String,
               placeholder: UIImage? = nil,
                completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil)

func loadImage(_ url: URL,
         placeholder: UIImage? = nil,
          completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil)

func loadImage(_ request: URLRequest,
             placeholder: UIImage? = nil,
              completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil)

WKInterfaceImage

func loadImage(_ urlString: urlString,
           placeholderName: String? = nil,
                completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil)

与UIImageView扩展相比,主要区别在于参数"placeholderName",它需要将占位符图像捆绑到r园区Watch应用中,出于性能原因。

UIButton

button.loadImage(urlString)

同样,KFSwiftImageLoader 使加载图像变得非常简单。在这种情况下,按钮主要使用了与UIImageView相同的函数签名,但是还包含两个可选参数:“isBackground”和“controlState”。

func loadImage(_ urlString: String,
               placeholder: UIImage? = nil,
              controlState: UIControlState = .normal,
              isBackground: Bool = false,
                completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil)

"controlState" 接收一个所需的UIControlState值,当设置按钮的图像时。 "isBackground" 只简单地表示按钮是否应该使用 "setBackgroundImage:for:" 或 "setImage:for:" 进行图像加载。

MKAnnotationView

annotationView.loadImage(urlString)

MKAnnotationView扩展中的方法与UIImageView扩展中的方法完全相同。

KFImageCacheManager

// Disable the fade animation.
// The default value is 0.1.
KFImageCacheManager.shared.fadeAnimationDuration = 0.0

// Set a custom timeout interval for the image requests.
// The default value is 60.0.
KFImageCacheManager.shared.timeoutIntervalForRequest = 15.0

// Set a custom request cache policy for the image requests as well as the session's configuration.
// The default value is .returnCacheDataElseLoad.
KFImageCacheManager.shared.requestCachePolicy = .useProtocolCachePolicy

// Disable file system caching by adjusting the max age of the disk cache and the request cache policy.
// The default value is 60 * 60 * 24 * 7 = 604800 seconds (1 week).
KFImageCacheManager.shared.diskCacheMaxAge = 0
KFImageCacheManager.shared.requestCachePolicy = .reloadIgnoringLocalCacheData

示例应用

请查看示例中的示例应用,该应用位于“示例”文件夹中,以了解如何使用KFSwiftImageLoader在iOS和 Watch中加载图像。

联系方式

Kiavash Faisali

许可

KFSwiftImageLoader可在MIT许可下使用。

版权(c)2019 Kiavash Faisali

特此免费授权,任何获得本软件及其相关文档副本(以下简称“软件”)的个人可以不受限制地使用该软件,包括但不限于使用权、复制权、修改权、合并权、发布权、分发权、转授权权和/或销售软件副本的权利,并允许向软件提供者的任何人员这样做,但需遵守以下条件:

上述版权声明和本许可声明应包含在软件的全部副本或实质部分中。

本软件按“现状”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他原因而引起的,这些责任源自、产生于或与此软件或其使用有关。