OC学习54:imageNamed和imageWithContentsOfFile区别?

张建 lol

使用imageNamed:加载图片

我们都是把 切图放在Images.xcassets 里面

1
UIImage * img = [UIImage  imageNamed:@"XXX"];

使用imageWithContentsOfFile

1
2
3
4
5
6
// 全局宏 : 可以在 pch 文件中定义一个宏,在整个项目中使用
#define ResourcePath(path) [[NSBundle mainBundle] pathForResource:path ofType:nil]
#define ImageWithPath(path) [UIImage imageWithContentsOfFile:path]

// 调用 需要写出.png/.jpg
UIImage* image = ImageWithPath(ResourcePath(@"img.jpg"));

两者区别

  1. imageNamed:
  • mageNamed加载图片,并且把image缓存到内存里面
  • 在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小,常用的图像处理

适用范围:UITableViewCell、UICollectionCell 等频繁加载同一个图标等

  1. imageWithContentsOfFile
  • imageWithContentsOfFile是只显示图片,但不加到内存中。
  • 如果要释放快速释放图片,可以使用[UIImage imageWithContentsOfFile:path]实例化图像

适用范围:大图片 比如像引导页那种占了几乎满屏的图,并且 复用率很低

其他

Images.xcassets中的素材

  • 只支持png格式的图片

  • 图片只支持 [UIImage imageNamed] 的方式实例化,但是不能从Bundle中加载

  • 在编译时,Images.xcassets 中的所有文件会被打包为 Assets.car 的文件

  • Post title:OC学习54:imageNamed和imageWithContentsOfFile区别?
  • Post author:张建
  • Create time:2023-05-30 14:22:01
  • Post link:https://redefine.ohevan.com/2023/05/30/OC/OC学习54:imageNamed和imageWithContentsOfFile区别?/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
OC学习54:imageNamed和imageWithContentsOfFile区别?