使用 Kingfisher 处理网络图片的读取与缓存
Kingfisher 是一个读取网络图片和处理本地缓存的开源库,由 onevcat 开发。提到图片缓存库,那么熟悉 Objective-C 开发的同学,可能会想起 SDWebImage。 没错,Kingfisher 除了提供图片的读取和缓存功能,它还是完全使用 Swift 实现的。
安装 Kingfisher
那么,我们就来了解一下 Kingfisher 吧, 它支持 CocoaPods 和 Carthage 包管理,我们可以通过他们来安装。
COCOAPODS 的安装方法:
设置 Podfile
:
source 'https://github.com/CocoaPods/Specs.git' |
然后运行命令:
$ pod install |
CARTHAGE 的安装方法:
设置 Cartfile
:
github "onevcat/Kingfisher" >= 1.7 |
然后运行命令:
$ carthage update |
关于 CocoaPods 和 Carthage 的使用,可以参看这两篇内容:
当然,如果你不习惯使用包管理,可以进行手动安装,可以直接使用 git
命令将库读取出来:
$ git submodule add https://github.com/onevcat/Kingfisher.git |
使用 Kingfisher
Kingfisher 对 UIImageView
做了扩展。 所以我们只需要引入 Kingfisher 库,然后在 UIImageView
的实例上面直接调用即可:
import Kingfisher imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!) |
- 指定默认图片
因为 Kingfisher 加载图片的时候是异步操作的,所以在图片读取那段时间中,UIImageView 中是没有图片的,所以我们可以设置一个默认图片:
imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!, placeholderImage: nil) |
- 自定义缓存机制
关于缓存,默认情况下,KingFisher 使用图片的 url 作为缓存的 key 值,如果你希望设置自己的缓存 key 值机制,还可以这样:
let URL = NSURL(string: "http://your_image_url.png")! |
使用 Resource
类来进行自定义缓存键值的处理。
- 强制刷新
Kingfisher 在默认情况下,每次读取图片的时候,会先判断本地缓存中是否已经存在,如果存在,就使用本地缓存的图片。当然你也可以强制每次都读取网络,只需要指定一个 Options 参数即可:
imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, |
Options 参数还有很多应用场景,比如你需要在图片加载出来后,用渐变的方式显示出来:
imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, |
这里的 Options 参数,就指定了一个1秒钟的渐变显示。
- 回调
当然,还可以在图片加载完成后,指定回调,来进行一些操作:
imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, |
结语
总之,KingFinsher 是一个非常方便的开源库,并且它是完全使用 Swift 来创建的,极大的而方便了我们处理图片的工作。
关于 KingFinsher 的更多内容,大家可以参看它的 Github 主页:
https://github.com/onevcat/Kingfisher
本文转自swiftcafe
使用 Kingfisher 处理网络图片的读取与缓存的更多相关文章
- OpenGL读取帧缓存数据
https://blog.csdn.net/niu2212035673/article/details/80251949 简述有些时候我们可能需要获取渲染后的图像数据,比较常用的函数是glReadPi ...
- ImageLoader(多线程网络图片加载)+本地缓存 for windowsphone 7
搞了好长一阵子wp,做点好事. C/S手机app中应用最多的是 获取网络图片,缓存到本地,展示图片 本次主要对其中的delay:LowProfileImageLoader进行修改,在获取图片的时候, ...
- 自己定制ListView,上拉刷新和下拉刷新,加载网络图片,并且添加缓存机制。
package com.lixu.listviewrefresh; import java.util.ArrayList; import java.util.HashMap; import java. ...
- Java 实现网络图片的读取与下载
//网络图片的下载,读取与删除 public static void fileDowAndDel(String httpurl){ try { URL url = new URL(httpurl); ...
- 记录一次读取memcache缓存的优化
我们是用mvc做web,大部分数据都用memcache做了缓存 有2台memcache缓存服务器 数据并不大. 某页面响应较慢,大概在4s左右. 页面本身很简单只是显示一个表单. 但是layout相对 ...
- APP 接口开发及读取静态缓存
<?php /** * Description: App 接口 * Create date:2015-10-19 13:36 * Author: zhaoyingnan **/ class Re ...
- laravel读取memcached缓存并做条件查询
public function onlineplayersource() { $res = $_POST['aoData']; $sEcho = 0; $iDisplayStart = 0; // 起 ...
- 使用glReadPixels 读取颜色缓存,深度缓存和模板缓存数据
glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *p ...
- 源码阅读-Kingfisher
最后更新:2018-01-16 使用教程: 官方的链接 使用 Kingfisher 处理网络图片的读取与缓存 1. 开始使用 桥接 KingFisher, 利用 KingfisherCompatibl ...
随机推荐
- 爬取本blog的所有标题和链接
#coding=utf-8 from bs4 import BeautifulSoup import urllib.request for i in range(1,54): url = " ...
- 【bzoj1604】[Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 旋转坐标系+并查集+Treap/STL-set
题目描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l≤Xi,Yi≤ ...
- [luoguP2763] 试题库问题(最大流)
传送门 每个类别和它所有的试题连一条权值为1的边. 增加一个超级源点s,s和每个类别连一条权值为选当前类别数量的边. 增加一个超级汇点t,每个试题和t连一条权值为1的边. 求最大流即可. ——代码 # ...
- android 笔记(Service)
Service 一.Serivce的启动方式分两种 1.startService.用这种方式启动的话,负责启动这个service的Activity或者其他组件即使被销毁了,Service也会继续在后台 ...
- npm-debug.log文件出现原因
项目主目录下总是会出现这个文件,而且不止一个,原因是npm i 的时候,如果报错,就会增加一个此文件来显示报错信息,npm install的时候则不会出现.
- 微信小程序之视图容器(swiper)组件创建轮播图
一.视图容器(Swiper) 1.swiper:滑块视图容器 微信官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/swi ...
- Integration testing
Integration testing 集成测试用来确保app的不同模块之间可以正确的一起工作.ASP.NET Core提供单元测试框架和内建的测试网络服务来支持集成测试,并且测试网络服务不需要网络开 ...
- vs-插件+配置
{ "window.zoomLevel": 0, "files.autoSave": "off", "editor.fontSiz ...
- GitHub 上受欢迎的 Android UI Library 整理(一)
抽屉菜单 https://github.com/mikepenz/MaterialDrawer ★7337 - 安卓抽屉效果实现方案https://github.com/Yalantis/Side-M ...
- tcp异常断开的重连解决方法
1.select超时重连 http://bbs.chinaunix.net/thread-4162149-1-1.html 2.http://bbs.csdn.net/topics/350074818 ...