ios中`Images.xcassets` 图片加载速度快的原因

227 阅读2分钟

我在做 App启动优化过程中发现,图片资源放在 xcode 自建目录下面和放在Images.xcassets中,加载速度差别很大。如图所示:

启动loading.png 这是放在 xcode 自建图片目录中的加载时长

启动2.png 这是优化后放在Images.xcassets中的加载时长 加载时长的差别很大,所以图片一定要放在Images.xcassets目录中去。

以下是加载速度快的原因:

Images.xcassets 是 iOS 中用于存储和管理应用程序中的图像资源的一种方式。它提供了一个集中管理图像的地方,并且在构建应用程序时,Xcode 会将这些图像进行优化和打包,以便更有效地在运行时加载。

  1. 预编译和优化: 在构建应用程序时,Xcode 会对 Images.xcassets 中的图像进行预编译和优化。这意味着图像可能会被转换成更适合目标设备的格式,以提高加载速度。

  2. 多分辨率支持: Images.xcassets 支持不同的图像分辨率和设备,例如@1x、@2x、@3x等。在运行时,系统会选择适合当前设备分辨率的图像,从而减少了加载不必要的高分辨率图像的开销。

  3. App Thinning: 当你发布应用程序到 App Store 时,苹果会使用 App Thinning 技术,根据目标设备的特征仅仅包含所需的资源。这包括仅将适用于特定设备的图像包含在下载的应用程序包中,从而减小了应用程序的大小和提高了加载速度。

  4. 运行时适配: 在运行时,iOS 可以根据设备的特性和当前的运行情况选择适当的图像。例如,在不同的设备方向或暗黑模式下,系统可以动态地选择合适的图像,而无需重新加载整个资源。

总的来说,Images.xcassets 提供了一种有效的方式来组织和管理图像资源,并通过Xcode的构建和优化过程以及iOS运行时的适配能力,使图像加载速度更快且更有效率。

启动优化:另外我看计算文本框高度的时候,有博主说用异步计算高度,但是我尝试之后并没有降低耗时,所以不建议异步计算label高度。 异步计算耗时 8.00ms Pasted Graphic 2.png

同步计算耗时 5.00ms

Pasted Graphic 3.png 实际操作之后,不建议异步计算高度。