iOS 资源管理

资源管理包含:文本文件,FrameWork ,Bundle,Resource...
而Images.scassets 是我们经常使用的资源管理文件,它是Xcode 5之后的一个图片资源管理文件;之前我们App 的iCON,LaunchImage等需要配置不同的Size 和 名称系统才能找到对应关系的资源;

主要来谈下对于我们加载资源两种方式:

  • Resource (直接拖进项目,可以在.ipa下看到的资源)
  • Images.scassets

图片格式

对于iOS本地应用程序来说使用PNG,重要事情说三遍: 为什么 为什么 为什么

官方表示当iOS应用构建的时候,Xcode会通过一种方式优化.png文件而不会优化其它文件格式。具体优化了什么呢 ?

iPhone的vRAM在存放单个像素的颜色的时候,并不是按照传统的“红-绿-蓝”这样的顺序排列的,而是“蓝-绿-红”,即我们常说的RGB,在iPhone的显存里是BGR,无Alpha通道;

Xcode在编译时,会对png资源进行优化,把png里RGB转成BGR,所有的alpha通道先和RGB三通道先乘好(比如R:1 G:1 B:1 A:0.5的颜色直接转成 R:0.5 G:0.5 B:0.5)最后进行渲染;

PNG

- 1.同个分辨率的图片,保存为png要比jpg大;
- 2.png图片有alpha通道,因此它支持图片透明,而jpg不支持透明;
- 3.xcode会对png格式进行特殊的优化处理,而对于其他图片不做处理

JPG

- 1: 高压缩率
- 2: 适合扫描使用

存储及注意事项

Images.xcassets 文件打包后会压缩在Assets.car文件下,一般通过 imageName 的方式加载,会缓存资源文件;
可以通过 Slicing 设置拉伸效果(聊天气泡,不同长度多语言文案资源扩展)

Resource 放在项目里的下载ipa解压缩就可以直接获取, mainBundle 查找项目目录下文件;

众所周知的缓存加载问题: imageNamed 和 imageWithContentsOfFile ;

在.car中的图片是不能通过imageWithContentsOfFile:来加载;
imageName:加载的图片要么是Assets.car中的图片,要么是资源包(mainBundle)中直接存放的图片。

如果用imageNamed:从Images.xcassets以外的地方加载图片,必须在文件名后加扩展名;

自定义 bundle 问题 (独立模块和公共组件类 资源整合)

 NSBundle *adSupportBundle = [NSBundlebundleWithPath:@"/Your  BundlePath"];
[adSupportBundle load];

About Bundles

内存问题

Q: 通过[UIImage imageNamed:]生成的对象什么时候被释放 ?

A: 加载文件名称,首次展示时候会进行文件读取和解码,同时保存一份全局缓存,内部实现相当于字典(key:value),App 第一次退到后台和收到内存警告时,该图片的缓存才会被清空,其他情况下缓存会一直存在。

而 Resource方式 (指直接拖进项目中在 .ipa根目录下或者沙盒中),图片创建通过读取文件数据加载,产生NSData 和 UIImage,之后销毁Data,UIImage引用计数为 0 后,也同样销毁;(类 imageWithContentsOfFile 不缓存逻辑,不频繁使用的大图资源加载方式)

App 内存优化

缩包优化

 <1>  资源文件过大, 根本问题减少资源的使用,能用代码方案实现则替换; 当然前提也是满足产品设计的要求;(如:圆角,阴影,灰度处理等)
 <2>  对于资源文件进行压缩处理,工具有很多,压缩比例客观; (imageOptim *非广告*)

资源缩包问题有想法和实践的同学,欢迎留言沟通交流~~~

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

推荐阅读更多精彩内容