• 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:方法加载,该方法的好处是内存随着对象的销毁而销毁,因此适用于大图片、频率低的图片

  • 相关阅读:
    面向对象
    模块
    第四十课、前置操作符和后置操作符------------------狄泰软件学院
    uva -- 10766
    poj -- 3468
    poj --3264
    cstring 的重载
    hihocode ---1032
    省赛总结
    13周总结
  • 原文地址:https://www.cnblogs.com/r360/p/16035819.html
Copyright © 2020-2023  润新知