6.23工作日记--xib-Btn高亮,App文件路径及操作

一.修改按钮高亮状态(xib)

用xib设置按钮的高亮状态,首先Type类型为Custom,修改Sate Config(明显是状态嘛),改为Highlighted,注意,要选择Background的图片(不要选Image来设置啊,否则这个按钮左边是图片,右边是文字。。。这个是默认的,否则还得改什么contentEdgeInsets,怪麻烦的)。

二.沙盒

1.沙盒简介

iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒。每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme。沙盒里面的文件可以是照片、声音文件、文本、属性列表等。

每一个APP都有一个存储空间,就是沙盒。

APP之间不能相互通信。

沙盒根目录结构:Documents、Library、temp。

简述一下Documents、Library、tmp的区别:

Documents:用于存储用户数据,iTunes备份和恢复的时候会包括此目录,所以,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下。

Library:包含两个子目录:Caches 和 Preferences。Caches用来存放用户需要换成的文件。Preferences是APP的偏好设置,可以通过NSUserDefaults来读取和设置。

tmp:用于存放临时文件,这个可以放一些当APP退出后不再需要的文件

打开模拟器沙盒方法

方法一:前往文件夹打开

/Users/wf/Library/Developer/CoreSimulator/Devices/29CABB1F-3063-4F2F-869B-ACFCAD07D99C/data/Containers/Data/Application/

直接在Finder->前往->前往文件夹,输入上面的内容即可。

方法二:通过Finder一步步查找

模拟器上的APP的沙盒实在用户目录下的资源库里面,但是资源库是隐藏文件夹。所以查看沙盒之前,现将隐藏文件夹显示出来。显示隐藏文件的命令:

defaults write com.apple.finder AppleShowAllFiles -bool true

用心的童鞋会发现,隐藏隐藏文件的命令:

defaults write com.apple.finder AppleShowAllFiles -bool false

获取沙盒根目录

//获取沙盒根目录

NSString*directory=NSHomeDirectory();

获取Documents路径

//获取Documents路径

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

NSString*path=[pathsobjectAtIndex:0];

获取Documents文件夹目录,第一个参数是说明获取Doucments文件夹目录,第二个参数说明是在当前应用沙盒中获取。

获取Library路径

//获取Library路径

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

NSString*path=[pathsobjectAtIndex:0];

NSLog(@"path:%@",path);

获取Caches路径

//获取Caches路径

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

NSString*path=[pathsobjectAtIndex:0];

NSLog(@"path:%@",path);

获取tmp路径

NSString*tmp=NSTemporaryDirectory();

NSLog(@"tmp:%@",tmp);

三.文件操作(今天主要是计算文件大小)


1.获取单个文件所占空间

//单个文件的大小

- (longlong)fileSizeAtPath:(NSString*)filePath{ 

NSFileManager* manager = [NSFileManager defaultManager];

if([manager fileExistsAtPath:filePath]){

//RXLog(@"文件名称是%@,文件大小是%llu", filePath, [[manager attributesOfItemAtPath:filePath error:nil] fileSize]);

return[[managerattributesOfItemAtPath:filePatherror:nil]fileSize];

}

return0;

}

// filePath是文件路径

2.Cache里面所有文件所占空间

- (CGFloat)folderSizeAtPath:(NSString*)folderPath{

NSFileManager *manager = [NSFileManager defaultManager];

if(![manager fileExistsAtPath:folderPath]){

return0;

}

NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath]objectEnumerator];

NSString *fileName =nil;

long long folderSize =0;

while((fileName = [childFilesEnumerator nextObject]) !=nil) {

NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];

folderSize += [self fileSizeAtPath:fileAbsolutePath];

}

returnfolderSize / (1024*1024);

}

3.清除文件

- (void)clearFileCache{

//放子线程里面去

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{

NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)objectAtIndex:0];

NSArray *files = [[NSFileManager defaultManager]subpathsAtPath:cachePath];

//RXLog(@"缓存目录是%@,文件是%@", cachePath, files);

NSError *error;

for(NSString *str in files){

NSString *path = [cachePath stringByAppendingPathComponent:str];

if([[NSFileManager defaultManager]fileExistsAtPath:path]){

[[NSFileManager defaultManager]removeItemAtPath:path error:&error];

}

}

dispatch_async(dispatch_get_main_queue(), ^{

[self clearCacheSuccess];

});

});

}

4.更新界面

- (void)clearCacheSuccess{

//RXLog(@"清除成功");

self.allFileSize=0;

[self.tableViewreloadData];

[MBProgressHUDshow:@"清除缓存成功!"displayTime:1.5];

}

注意:清除操作方子线程里面,但是更新UI必须放在主线程里面,否则会操作失败。

5.cell里面数据重叠的问题

以前用这个方法解决,但是,这个方法太low了。。。把contentView里面的控件全部删除,再添加进来。

while([cell.contentView.subviews lastObject] !=nil) {

[(UIView*)[cell.contentView.subviewslastObject]removeFromSuperview];

}

然后今天是把这个控件给了self,然后加载的时候只是针对这个控件做一些操作。

self.cacheSizeLabel.text=nil;  加载前先置为空。不知道这个方法是否好用。

最后,我们总是在尝试中进步,今晚接着看小码哥的视频,百思不得姐下载不下来~~先看基础知识吧~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 前言: 出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能...
    李sir35阅读 15,945评论 4 19
  • 前言: 出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能...
    坤哥lqk阅读 2,104评论 0 4
  • 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应...
    彬至睢阳阅读 637评论 0 0
  • 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一...
    绚雨蓝了个枫阅读 4,088评论 0 2
  • iOS开发-文件管理(一) 一、iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭...
    MacShare阅读 1,798评论 0 6