[Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存

[Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存,第1张

概述本文将演示图像加载Loading动画效果的自定义和缓存。 首先确保在项目中已经安装了所需的第三方库。 点击【Podfile】,查看安装配置文件。 1 platform :ios, ‘12.0‘2 use_frameworks!3 4 target ‘DemoApp‘ do5 source ‘https://github.com/CocoaPods/Specs.git‘6

本文将演示图像加载Loading动画效果的自定义和缓存。

首先确保在项目中已经安装了所需的第三方库。

点击【Podfile】,查看安装配置文件。

1 platform :ios,12.02 use_frameworks!3 4 target DemoApp do5     source https://github.com/CocoaPods/Specs.git6     pod Kingfisher7 end

根据配置文件中的相关配置,安装第三方库。

然后点击打开【DemoApp.xcworkspace】项目文件。

在项目导航区,打开视图控制器的代码文件【VIEwController.swift】

  1 import UIKit  2 //在当前的类文件中,引入已经安装的第三方类库  3 import Kingfisher  4   5 class VIEwController: UIVIEwController {  6   7     //添加一个图像视图变量,作为当前类的属性  8     var imageVIEw : UIImageVIEw!  9     overrIDe func vIEwDIDLoad() { 10         super.vIEwDIDLoad() 11         // Do any additional setup after loading the vIEw,typically from a nib. 12          13         //设置根视图的背景颜色为橙色 14         self.vIEw.backgroundcolor = UIcolor.orange 15          16         //从项目中读取一张图片 17         //创建一个图像视图,显示加载的图片 18         let image = UIImage(named: "background") 19         //设置图像视图的显示区域为当前的视图控制器 20         imageVIEw = UIImageVIEw(image: image) 21         //设置图像视图的边界 22         imageVIEw.frame = self.vIEw.bounds 23         //将图像视图添加到根视图 24         self.vIEw.addSubvIEw(imageVIEw) 25          26         //添加一个图像按钮, 27         //当用户点击该按钮时,下载一张网络图片 28         let button = UIbutton(frame: CGRect(x: 0,y: 528,wIDth: 320,height: 40)) 29         //设置按钮的背景颜色为橙色 30         button.backgroundcolor = UIcolor.orange 31         //同时设置正常 32         button.setTitle("Load image again",for: .normal) 33         //给按钮控件绑定点击事件 34         button.addTarget(self, 35                         action: #selector(VIEwController.loadImage), 36                         for: .touchUpInsIDe) 37         //将按钮添加到根视图 38         self.vIEw.addSubvIEw(button) 39     } 40      41     //添加一个方法,用来响应按钮的点击事件 42     @objc func loadImage() 43     { 44         //初始化一个网址对象,作为网络图片的地址 45         let url = URL(string: "http://images.apple.com/v/iphone-7/d/images/films/product_large_2x.jpg") 46         //设置网络图片加载功能动画的样式,这里使用系统默认的动画Loaing 47         imageVIEw.kf.indicatorType = .activity 48         //将图像视图的显示内容,修改为下载后的图片 49         imageVIEw.kf.setimage(with: url) 50  51  52         //获得项目中动画资源的路径 53         let p = Bundle.main.path(forResource: "loading",ofType: "gif")! 54         //从项目中读取一张GIF动画 55         let data = try! Data(contentsOf: URL(fileURLWithPath: p)) 56         //设置在下载图片时,使用这张图片的素材,作为图片下载时的Loading动画。 57         imageVIEw.kf.indicatorType = .image(imageData: data) 58         //将图像视图的显示内容,修改为下载后的图片 59         imageVIEw.kf.setimage(with: url) 60          61  62         //调用扩展方法,下载并设置网络上的图片,同时设置下载进度 63         imageVIEw.kf.setimage(with: url,progressBlock: 64         { 65             //通过已经接收的字节数和全部的字节数,计算图片下载进度的百分比 66             receivedSize,totalSize in 67             let percentage = (float(receivedSize) / float(totalSize)) * 100.0 68             print("downloading progress: \(percentage)%") 69         }) 70         //调用扩展方法,下载并设置网络上的图片, 71         //当下载完成之后,使用渐显的方式显示下载的图片 72         imageVIEw.kf.setimage(with: url,options: [.Transition(.fade(1.0))]) 73  74         //初始化一个圆角图片处理器,并设置圆角的半径为160 75         let processor = RoundCornerImageProcessor(cornerRadius: 160) 76         //调用扩展方法,下载并设置网络上的图片,下载并设置网络上的图片, 77         //同时给下载的图片添加圆角效果 78         imageVIEw.kf.setimage(with: url,placeholder: nil,options: [.processor(processor)]) 79          80         //初始化一个模糊图像处理器,并设置模糊半径为4,接着再增加一个圆角处理器 81         let processor = BlurImageProcessor(blurRadius: 4) >> RoundCornerImageProcessor(cornerRadius: 20) 82         //调用扩展方法,下载并设置网络上的图片,同时给下载的图片添加模糊和圆角效果 83         imageVIEw.kf.setimage(with: url,options: [.processor(processor)]) 84          85         //当再次给图像视图,设置同一个网络图片时,使用的是缓存的图片, 86         //如果需要重复下载图片。可以设置下载选项为强制刷新。 87         imageVIEw.kf.setimage(with: url,options: [.forceRefresh]) 88          89         //如果需要从缓存中获取图片,可以设置下载的选项为来自缓存。 90         imageVIEw.kf.setimage(with: url,options: [.onlyFromCache]) 91  92  93         //图片缓存的使用 94         //通过图片下载器,下载指定网址的图片 95         ImageDownloader.default.downloadImage(with: url!,options: [],progressBlock: nil) 96         { 97             (image,error,url,data) in 98  99             //将下载的图像转换成指定的图片格式100             //let data = UIImagePNGRepresentation(image!)101 102             //通过调用图片缓存全局对象的存储方法,将图片存储到本地,并设置存储的键值103             ImageCache.default.store(image!,original: data,forKey: "AppleWatch",processorIDentifIEr: "",cacheSerializer: DefaultCacheSerializer.default,todisk: false,completionHandler: nil)104             105             //通过简化的方法,可以仅需指定键值,即可快速缓存图片106             ImageCache.default.store(image!,forKey: "AppleWatch")107             //通过键值可以快速判断在某键值下,是否存在缓存的图片。108             print(ImageCache.default.isImageCached(forKey: "AppleWatch"))109         }110         111         //通过调用图片缓存全局对象的删除方法,可以删除指定键值的缓存图像112         ImageCache.default.removeImage(forKey: "AppleWatch")113         //通过调用图片缓存全局对象的删除磁盘缓存方法,可以删除磁盘上的所有缓存图片114         ImageCache.default.cleardiskCache()115         //清除内存缓存方法,可以删除在内存中缓存的所有图片116         ImageCache.default.clearMemoryCache()117         //清除过期的磁盘缓存方法,可以删除超过指定期限的,缓存在磁盘上的图片118         ImageCache.default.cleanExpireddiskCache()119         120         //设置缓存区域的大小为50M121         ImageCache.default.maxdiskCacheSize = 50 * 1024 * 1024122         //设置缓存的期限为7天,123         //超过7天的缓存图片将被删除124         ImageCache.default.maxCachePeriodInSecond = 60 * 60 * 24 * 7125         //设置图片下载的超时时限为30秒,当超过30秒时,下载任务失败126         ImageDownloader.default.downloadTimeout = 30.0 127     }128     129     overrIDe func dIDReceiveMemoryWarning() {130         super.dIDReceiveMemoryWarning()131         // dispose of any resources that can be recreated.132     }133 }
总结

以上是内存溢出为你收集整理的[Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存全部内容,希望文章能够帮你解决[Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1021056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存