一、缓存图片

//1.首先创建在沙盒中创建一个文件夹用于保存图片

NSFileManager *fileManager = [[NSFileManager alloc] init];

NSString *pathDocuments = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSString *createPath = [NSString stringWithFormat:@"%@/Image", pathDocuments];

// 判断文件夹是否存在,如果不存在,则创建

if (![[NSFileManager defaultManager] fileExistsAtPath:createPath]) {

[fileManager createDirectoryAtPath:createPath withIntermediateDirectories:YES attributes:nil error:nil];

} else {

NSLog(@"FileDir is exists.");

}

for (int i = 0; i < viewsArray.count; i++) {

UIImageView * imageV = [[UIImageView alloc]initWithFrame:CGRectMake(screenWidth * i, 0, screenWidth, self.homePageview.height)];

[imageV sd_setImageWithURL:[viewsArray objectAtIndex:i]placeholderImage:[UIImage imageNamed:@"Moren6p.png"]];

UITapGestureRecognizer * tap =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];

[imageV addGestureRecognizer:tap];

imageV.userInteractionEnabled = YES;

[self.homePageview addSubview:imageV];

UIImage * image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[viewsArray objectAtIndex:i]]];

//2.缓存我所需要的图片

NSString *path_sandox = NSHomeDirectory();

//创建路径

NSString *CachePath = [NSString stringWithFormat:@"/Documents/Image/HomeScroll%d.png",i];

//设置一个图片的存储路径

NSString *imagePath = [path_sandox stringByAppendingString:CachePath];

//把图片直接保存到指定的路径(同时应该把图片的路径imagePath存起来,下次就可以直接用来取)

[UIImagePNGRepresentation(image) writeToFile:imagePath atomically:YES];

}

二、读取图片

//1.首先获取沙盒路径

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSFileManager *fileManage = [NSFileManager defaultManager];

NSString *CacheDocuments = [documentsDirectory stringByAppendingPathComponent:@"/Image”];//我把图片缓存到沙盒中的Document下得Image文件夹中

NSArray *CacheScrollImage = [fileManage subpathsOfDirectoryAtPath:CacheDocuments error:nil];//这个是获取Image文件夹下所有文件的文件名数组

//2.离线加载沙盒中缓存的图片

for (int i =0; i<CacheScrollImage.count; i++) {

NSString * CacheImage = [NSString stringWithFormat:@"Image/HomeScroll%d.png",i];

NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:CacheImage];

NSData *data = [fileManage contentsAtPath:myDirectory];

UIImage * image = [UIImage imageWithData:data];

}

IOS- 网络图片缓存到沙盒中 ,离线取出。的更多相关文章

  1. iOS - 沙盒中,如何判断存在文件、目录

    在iOS开发中,在沙盒中创建沙盒一些存储各个功能的文件目录或者文件. 使用: [NSFileManager defaultManager] 1.判断目录,用她可以. 2.判断文件,用她可以. 3.创建 ...

  2. iOS篇之有沙盒缓存

    内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时 ...

  3. 关于ios项目沙盒中的文件和Xcode项目创建的文件

    //1.1获取在Xcode项目打开的情况下创建的Plist文件 NSString *path = [[NSBundle mainBundle]pathForResource:@"Profes ...

  4. iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)

    版权声明:本文为博主原创文章,转载请声明出处:http://blog.csdn.net/jinnchang 1.沙盒机制介绍 iOS 中的沙盒机制(SandBox)是一种安全体系.每个 iOS 应用程 ...

  5. Swift iOS 文件操作:沙盒(SandBox)、程序包(NSBundle)

    1.沙盒机制介绍 iOS 中的沙盒机制(SandBox)是一种安全体系.每个 iOS 应用程序都有一个单独的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒.所有的非代码文件 ...

  6. 【精】iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)

    1.沙盒机制介绍 iOS 中的沙盒机制(SandBox)是一种安全体系. 每一个 iOS 应用程序都有一个单独的文件系统(存储空间).并且仅仅能在相应的文件系统中进行操作,此区域被称为沙盒. 全部的非 ...

  7. iOS开发之获取沙盒路径

    iOS开发之沙盒机制(SandBox)具体解说了沙盒的一些机制.在开发中,我们须要对沙盒进行操作.所以我们须要获取到沙盒路径. 沙盒里的目录包含Documents.Library.tmp.这三个目录的 ...

  8. 获取保存在沙盒中plist文件的用户的字典信息

    获取保存在沙盒中plist文件的用户的字典信息

  9. iOS网络图片缓存详解

    在开发移动应用的时候比如Android,IOS,因为手机流量.网速.内存等这些因素,当我们的移动应用是针对互联网,并要频繁访问网络的话,对网络优化这块就显得尤为重要了. 比如某个应用要经常显示网络图片 ...

随机推荐

  1. 何时使用 Em 与 Rem

    原文  http://www.w3cplus.com/css/when-to-use-em-vs-rem.html   你可能已经很熟练使用这两个灵活的单位,但你可能不完全了解何时使用rem,何时使用 ...

  2. leetcode2:Add Two Numbers

    Add Two Numbers Total Accepted: 55216 Total Submissions: 249950My Submissions You are given two link ...

  3. MySQL深入利用Ameoba实现读写分离

    3 ameoba安装配置   3.1 安装配置JDK [root@stu15 ~]# rpm -ivh jdk-7u67-linux-x64.rpm [root@stu15 ~]# cd /usr/j ...

  4. sql 基本操作

    SQL基本操作   一数据类型1整数型 int2精确数值型 decimal(n,p)n为总位数,p为小数位数3浮点型 float4字符型char(n)n最大为4,varchar(n)5日期型datat ...

  5. EasyUI datagrid checkbox数据设定与取值(转自http://blog.csdn.net/baronyang/article/dnetails/9323463,感谢分享,谢谢)

    这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数据列的 Checkbox 设定为 Che ...

  6. Knockout.Js官网学习(简介)

    前言 最近一段时间在网上经常看到关于Knockout.js文章,于是自己就到官网看了下,不过是英文的,自己果断搞不来,借用google翻译了一下.然后刚刚发现在建立asp.net mvc4.0的应用程 ...

  7. c语言学习的第五天

    #include<stdio.h> #include<stdbool.h> int main() { _Bool num=1; if (num==true); { printf ...

  8. 【转】MySQL GRANT REVOKE用法

    MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器 授权->确定用户是否拥有足够的权限执行查询请求等. 如果认证不成功的话,哪么授权肯定是无法进行的. revo ...

  9. 用FileInputStream读文件,字节数组接收,不知道文件的大小时怎么办

    FileInputStream in = new FileInputStream(文件路径File); byte[] buffer = new byte[in.available()]; in.rea ...

  10. delphi常用函数过程

    数据类型转化 1.1.         数值和字符串转化 Procedure Str(X [: Width [ : Decimals ]]; var S); 将数值X按照一定格式转化成字符串S.Wid ...