iOS 图片资源放在 Images.xcassets 和单独文件夹的区别,通过 imageNamed 和imageWithContentsOfFile 加载的区别

一、iOS 图片资源放在 Images.xcassets 和单独文件夹的区别

  1. Images.xcassets

    (1)图片的资源包放到 Images.xcassets 中,会把所有的文件打包 Assets.car文件,图片会被压缩,从而使包的体积变小。

    (2)只支持png格式的图片

    (3)图片只支持 [UIImage imageNamed:@"logo01"] 的方式实例化

        imageView.image = [UIImage imageNamed:@"logo01"];
    
  2. 单独文件夹

    (1)图片的资源包放到文件夹中,会被打包 MainBundle 中。图片不会被压缩。

    (2)可以使用 [UIImage imageNamed:@"logo01"] 加载,也可以使用i mageWithContentOfFile: 方法加载。

    // imageView.image = [UIImage imageNamed:@"logo01"];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"logo01.png" ofType:nil];
    imageView.image = [UIImage imageWithContentsOfFile:path];
    

二、通过 imageNamed 和imageWithContentsOfFile 加载图片的区别

  1. imageNamed

    (1)加载到内存当中会一直存在内存当中,(图片)不会随着对象的销毁而销毁。

    (2)相同的图片是不会重复加载内存中

    (3)加载到内存中占据的内存较大

  2. imageWithContentsOfFile

    (1)加载的图片会随着对象的销毁而销毁

    (2)相同的图片是会重复加载到内存中

    (3)加载到内存中占据的内存较大

三、总结

​ 放在 Images.xcassets 里边的图片打包时,会被压缩成.car文件,APP的体积变小。但是不能通过路径方式加载图片,只能使用 [UIIimage imageName:]

而imageName:这个方法加载图片,会在内存中一直存在,什么时候销毁不受管理员控制,因此适用于加载频繁的小图片

而放在文件夹的图片,可以使用imageWithContentOfFile:方法加载,该方法的好处是内存随着对象的销毁而销毁,因此适用于大图片、频率低的图片

posted @ 2022-03-21 17:58  任淏  阅读(629)  评论(0编辑  收藏  举报