写在前面
在iOS开发中,*终项目的大小跟项目中的图片关系很大,因为代码的大小是很小的,可以说影响*终项目大小的主要就是项目中的图片资源,所以如何组织项目中的图片资源显得尤为重要。

正文
Assets.xcassets文件
当你创建一个空项目时,会默认帮你生成一个Assets.xcassets文件,当然你也可以自己创建:

%title插图%num
如果没有特殊的需求,一个工程里有一个xcassets文件就可以了,项目中所有图片都可以放在里面,为了组织更有条理更清晰,可以在这里面用文件夹分类,可以按照功能的模块来分类,比如一个模块的功能放在一个文件夹中。

%title插图%num

在这个文件中默认会有一个AppIcon的文件,可以将相对应大小的应用图标直接拖到右边对应大小的地方,就可以了。处理AppIcon这里面还可以放LaunchImage,只要在这个AppIcon这个栏内右键新建即可,还可以针对不同设备新建不同的LaunchImage和AppIcon

%title插图%num

如果只想往项目里加入一张普通的图片,就选择New Image Set,这个Image Set实质就是一个文件夹,里面包括不同分辨率的图片和一个Contents.json文件,内容如下包含着这个图片集中图片文件的基本信息,同AppIcon一样,只要将自己的图片拖到相应的位置即可,然后在项目中使用imageNamed:方法时,使用的名字是这个Image Set的名字,而不是图片真实的名字,这里可以注意的是图片真实的名字虽然无所谓,但*好还是按照一些规律来,*好不要出现中文,而Image Set的名字可以定义一些规则:如用image开头,中间加上模块名,*后加上图片本身的名字,中间用下划线连接,当然这里只是我个人的提议,我们项目中图片就是用这种方式进行命名的。

{
“images” : [
{
“idiom” : “universal”,
“filename” : “sPECIALOFFERIconSurvey1.png”,
“scale” : “1x”
},
{
“idiom” : “universal”,
“filename” : “sPECIALOFFERIconSurvey1@2x.png”,
“scale” : “2x”
},
{
“idiom” : “universal”,
“filename” : “sPECIALOFFERIconSurvey1@3x.png”,
“scale” : “3x”
}
],
“info” : {
“version” : 1,
“author” : “xcode”
}
}

 

将图片放在xcassets文件中的好处:

组织清晰
不同功用的图片有专门的格式
不同分辨率的图片好管理
工程打包后会对图片进行压缩
这里我要着重说一下第四点,包的大小,如果将图片直接放在工程目录下面,项目打包后图片文件也是散落在包里面,而且不会对图片进行压缩,而如果放在xcassets中,在打包后会将这些图片(除了AppIcon和LaunchImage,这两种图片是直接放在包中的)统一压缩成一个Assets.car的文件,大大减小包的大小,具体是几倍的关系我记不清了,但是相当的可观。

Assets.car文件
说完Assets.xcassets,那么说说由它生成的Assets.car文件,这个文件是一种压缩文件。
我们在开发过程中肯定会遇到一种情况就是把一个ipa的包解压出来看看里面有哪些图片,不管是不是自己的项目,总可能会有这种需求,那如果图片都在Assets.car中该怎么获取呢,直接解压是不行的,这时候就需要用到一个命令行工具叫cartool,这是一个开源软件,可以从github下载,这里给出github地址:https://github.com/steventroughtonsmith/cartool

使用方法是cartool Assets.car outputDirectory

还是给大家上一张图

%title插图%num

先将ipa解压缩,然后显示app包的内容,将Assets.car复制到桌面,然后就可以像上图一样,当然要在桌面上新建一个文件夹,如果你想直接把图片解压到桌面上我也是不介意的!

后记
这篇博客大概就是这些内容,主要就是给大家分享这个叫做cartool的工具还有就是科学的组织项目中的图片,当然要感谢大神写出这样方便的工具。

话说这个月已经过去一半了,然而这是这个月的*篇博客,还需加油,努力学习,努力写博客,分享知识,分享快乐,每月四篇一定要实现。