在iOS开发中生成一个UIImage对象的方法通常有两种
1.利用imageNamed方法
2.使用imageWithContentsOfFile
下面介绍这两中方法的区别:
imageNamed,从应用bundle中寻找图片加载到缓存中,适用于图片较小或经常使用。加载图片太大容易产生内存泄漏。
imageWithContentsOfFile:
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
UIImage *image = [UIImage imageWithContentsOfFile:filePath];
使用时稍微麻烦一点,以文件数据形式被加载。返回的对象不会保存在缓存中,一旦对象销毁就会释放内存。
然后,项目中图片资源存放一般会有两种形式:存放在Assets目录下 和 存放在项目根目录下自行管理,都是打包在mainBundle文件中,其中
Assets.xcassets在app打包后,以Assets.car文件的形式出现在bundle中。其作用在于:
- 自动识别@2x,@3x图片,对内容相同但分辨率不同的图片统一管理。
- 可以对图片进行剪裁和拉伸处理。
imageWithName既可以加载Assets目录下的资源也可以加载项目自定义的图片文件路径,区别是 :
1.加载Assets目录下的图片对格式有要求,必须是png格式。
2.加载自定义图片路