资源文件是放置在应用程序本地与应用程序一起变异、打包和发布的非程序代码文件,如应用中的声音、视频、图片和文本文件等。
1、图片文件优化
图片文件优化包括文件格式和文件大小的优化。移动设备中,支持的图片格式主要是png、gif、jpeg格式,苹果推荐png格式。在Xcode中,继承了第三方png优化工具pngcrush,它可以在编译的时候对png格式文件进行优化和压缩,我们只需要设定编译参数Compress PNG Files为Yes就可以了。
因为png格式文件是jpeg格式文件的三倍,所以如果是网络资源,推荐使用jpeg格式。
图片是一种特殊的资源文件,创建UIImage对象时,可以使用静态工厂方法+imageNamed:和构造函数-initWithContentsOfFile:。
+imageNamed:方法在内存中建立缓存,这些缓存直到应用停止才清除。如果是贯穿整个应用的图片(如图标、logo等),推荐使用+imageNamed:创建。如果是使用一次的图片,推荐使用构造函数-initWithContentsOfFile:创建。
2、音频文件优化
iOS平台中,主要的音频文件格式有4种:
(1)WAV文件
(2)MP3(MPEG Audio Layer3)文件
(3)CAFF(Core Audio File Format)文件
(4)AIFF(Audio intenchange File Format)文件
音频文件优化包括文件格式和文件大小的优化,单也要考虑到文件使用场景、采用的技术(OpenAL、AVAudioPlayer)等因素。在iOS应用中,使用本地音频资源文件的主要应用场景是背景音乐和音乐特效。
背景音乐优化
背景音乐会在应用中反复播放,它会一致驻留在内存中并消耗CPU,所以更适合比较小的文件,而压缩文件是不错的选择。压缩文件主要有AIFC和MP3两种格式,一般首选AIFC,因为这是苹果推荐的格式。但是我们获得的原始文件格式不一定是AIFC,这种情况下我们需要使用afconvert工具,将其转换为AIFC格式。在中终端中执行如下命令:
$ afconver -f AIFC -d ima4 cast.wav
其中-f AIFC参数用于转换为AIFC格式,-d ima4参数指解码方式,cast.wav是要转换的源文件。转换成功后,会在相同目录下生成cast.aifc文件。afconvert工具也可以转化MP3等其他压缩格式文件,单MP3本身就是有损压缩,再经过afconvert转换,音频的质量会受到影响,尽量使用WAV格式。
音乐特效优化
音乐特效用于很多游戏中,如发射子弹、敌人被打死或按钮点击等发出的声音,这些声音都比较短。如果追求震撼的3D效果,可以采用苹果专用的无压缩CAFF格式文件,其他格式文件尽量不考虑。一般不要使用压缩音频文件,这主要是因为音乐特效通常采用OpenAL技术,它只接受无压缩的音频文件。另外,压缩音频文件都会造成音质的丢失。如果我们没有CAFF格式的文件,可以使用afconvert工具将其转换为CAFF格式,终端命令如下:
$ afconvert -f caff -d LEI16 cast.wav
其中-f caff参数用于转换为CAFF格式,-d LEI16参数指定解码方式,cast.wav是要转换为源文件。默认音频的采样频率为22050Hz,如果想要搞音频采样频率,可以通过如下命令:
$ afconvert -f caff -d LEI16@44100 cast.wav
如果资源文件来自于网络,那么MP3格式就非常适合的。
参考资料
《IOS开发指南 从HELLO WORLD到APP STORE上架 第5版》