图片在项目中的存在方式

一、图片拖入项目中的方式

1、直接拖入项目

2、放在Assets.xcassets中

二、图片加载的两种方式

1、加载类型
  1. 直接拖入项目
  • 方式一:imageWithContentsOfFile
  • 方式二:imageNamed
//通过路径寻找
NSString *path = [[NSBundle mainBundle] pathForResource:@"XX.jpg" ofType:nil];
_imageView.image = [UIImage imageWithContentsOfFile:path];

//通过名字寻找
_imageView.image = [UIImage imageNamed:@"图片.jpg"];
  1. Assets.xcassets
  • 方式一:imageNamed(唯一)
//通过路径无法找到
NSString *path1 = [[NSBundle mainBundle] pathForResource:@"2.jpg" ofType:nil];
_thridImageView.image = [UIImage imageWithContentsOfFile:path1];

_fourthImageView.image = [UIImage imageNamed:@"2"];
2、打包方式上的不同

项目完成以后,所有的图片资源会被一起打包成ipa文件发布到AppStore,拖入Assets.xcassets文件夹中的图片最后会被打包成一个Assets.car文件,我们不能根据路径读取图片。而拖入Supporting Files文件夹中的图片可以根据路径读取。另外,从某种程度上讲,拖入Assets.xcassets文件夹中的图片因为被打包成了Assets.car文件,可以得到一定程度上的保护,以防止盗图(之所以说是一定程度,是因为我们依然可以通过其他手段解压相关图片)。而拖入Supporting Files文件夹中的图片则直接暴露在外面。

3、占用内存和性能优化
1、通过imageNamed:方法加载的图片,其图片在使用完成后,并不会立即被释放掉,具体释放时间由系统决定。因此,这种加载方法,适用于图片小、数量少,且经常使用的图片处理场合。

2、通过imageWithContentsOfFile:可以快速的手动释放。
4、适用场合

1、imageNamed:方法适用于经常使用,并且图片小、数量少的场合,方便快速加载;

2、imageWithContentsOfFile:方法适用于图片比较大,并且图片数量非常多的场合,此时需要考虑程序的性能。

你可能感兴趣的:(图片在项目中的存在方式)