美文网首页afnetwork 使用
第三方库SDWebImage的使用(附Demo)

第三方库SDWebImage的使用(附Demo)

作者: cocoaCoffee | 来源:发表于2018-10-26 11:00 被阅读0次

首先将SDWebImage导入项目

使用CocoaPads安装第三方库

platform :ios, '8.0'

target ‘图片缓存练习’ do
  pod 'SDWebImage'   
end 
//库名后不加版本,默认最新版本

流程

盗图

主要方法:

  •    加载图片的几种方法

加载图片的方法在pods的UIImageView+WebCache类中

UIImageView+WebCache

说一下前几种

1.没有有占位图的加载方式

- (void)sd_setImageWithURL:(nullable NSURL *)url

2.有占位图的加载方式

////给一张默认图片,先使用默认图片,当图片加载完成后再替换,占位符的名字随你定
- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder

3.没占位图的加载方式 并且实现回调Block完成下一步任务

- (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock

4.使用可更换optionsType的加载方式

-(void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options

Options 枚举如下:

  • SDWebImageRetryFailed 默认情况下,当URL无法下载时,URL就会被列入黑名单,这样库就不会继续尝试了。此标记禁用此黑名单。
  • SDWebImageLowPriority 默认情况下,图像下载是在UI交互过程中启动的,这标志禁用该特性,导致在UIScrollView减速方面延迟下载。
  • SDWebImageCacheMemoryOnly 此标记禁用磁盘缓存
  • SDWebImageProgressiveDownload 此标志可以进行渐进式下载,在下载过程中,图像会逐步显示,就像浏览器所做的那样。默认情况下,图像只显示一次完全下载。
  • SDWebImageRefreshCached 即使缓存了映像,也要尊重HTTP响应缓存控制,并在需要的情况下从远程位置刷新映像。磁盘缓存将由NSURLCache来处理,而不是使用SDWebImage,这会导致轻微的性能下降。这个选项有助于处理在同一个请求URL后面更改的图像,例如Facebook图形api概要图。如果刷新了缓存的图像,那么完成块就会被缓存的图像和最后的图像再次调用一次。只有当你不能用嵌入的缓存破坏参数使你的url静态时,才使用这个标志。
  • SDWebImageContinueInBackground 在iOS 4+中,如果应用程序进入后台,可以继续下载图片。这是通过请求系统在后台获得额外的时间来完成请求完成的。如果后台任务过期,操作将被取消。
  • SDWebImageHandleCookies 通过设置NSMutableURLRequest来处理存储在NSHTTPCookieStore中的cookie。HTTPShouldHandleCookies =是的;
  • SDWebImageAllowInvalidSSLCertificates 启用不受信任的SSL证书。用于测试目的。在生产中使用谨慎。
  • SDWebImageHighPriority 默认情况下,图像按顺序装载在队列中。这个标志把它们移到队列的前面。
  • SDWebImageDelayPlaceholder 默认情况下,在图像加载时加载占位符图像。此标志将延迟加载占位符图像,直到图像完成加载。
  • SDWebImageTransformAnimatedImage 我们通常不会在动画图像上调用transformdownloade昏暗委托方法,因为大多数转换代码会把它搞砸。无论如何,使用这个标志来转换它们。
  • SDWebImageAvoidAutoSetImage 默认情况下,图像会在下载后添加到imageView中。但是在某些情况下,我们想要在设置图像之前有手(例如,应用一个过滤器或将它添加到交叉衰减动画中)使用这个标记如果你想在成功完成时手工设置图像
  • SDWebImageScaleDownLargeImages 默认情况下,图像会被解码,以尊重它们原来的大小。在iOS上,这一标志将把图像缩小到与设备受限内存兼容的大小。*如果“SDWebImageProgressiveDownload”标志设置禁用缩减。

(以上均为复制粘贴)

图片缓存

  • 获取

    [SDImageCache sharedImageCache] getSize];
    
  • 清理内存缓存

    [[SDImageCache sharedImageCache] clearMemory];
    
  • 清理磁盘缓存的接口

    [[SDImageCache sharedImageCache] clearDisk];
    
  • 异步将所有过期的缓存映像从磁盘中删除

    [[SDImageCache sharedImageCache]deleteOldFiles];
    

  • Demo我加载图片只用了一种方式,你如果想练下其他的方式,就改下代码,都差不多,传的参数不同,图片URL我是盗用别人的,因为图片都是放在云服务器上的

注意:最重要的来了

  • 如果请求是http而不是https,图片是加载不出来的

解决方法:在Info.plist中添加NSAppTransportSecurity类型Dictionary。
在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES。


image.png

Demo地址

相关文章

网友评论

    本文标题:第三方库SDWebImage的使用(附Demo)

    本文链接:https://www.haomeiwen.com/subject/xafktqtx.html