代码之家  ›  专栏  ›  技术社区  ›  Heuristic

静态渐变图像vs CAGradientLayer?

  •  3
  • Heuristic  · 技术社区  · 8 年前

    我需要在应用程序中显示一些渐变背景,到目前为止,我有两种选择,一种是使用静态渐变图像,另一种是用 CAGradientLayer ,我正在努力在两者之间做出选择。

    我只需要在渐变中有三个颜色停止点,顶部、中间和底部,所以这两种方法都是直接的,我主要关心的是渲染的速度,这可以归结为 [UIImage imageNamed:@"gradient-image.png"] CGGradientLayer 。静态图像可以保留在内存中,因此只加载一次,但是对于不同的屏幕,要么缩放单个图像,要么我必须有不同大小的图像,这会增加应用程序的整体大小。

    我不知道是否有任何文章或结论可以说明每种方法的优缺点,通常应该选择哪一种?

    谢谢

    1 回复  |  直到 8 年前
        1
  •  1
  •   matt    8 年前

    如果图像必须缩小,就会浪费大量内存。如果图像的大小正好适合屏幕大小和屏幕分辨率,则 跑步 应用程序在图像和渐变层之间,因为渐变层有一个与正确大小的图像大小相同的后备存储。但考虑到可能的分辨率和屏幕大小的巨大数量,这是一个非常高的要求,当然,它大大增加了应用程序的大小 它本身 .

    基于这些原因,我认为渐变层是最好的选择。最好给设备 说明书 用于绘图,而不是提供实际 除非,如你所说,有时间呈现问题。

    现在,我从未发现渐变层存在任何“渲染速度”问题,我认为要担心这是过早优化的情况。此外,从应用程序加载图像也需要时间。可能出现问题的地方是,如果您这样做是为了形成表视图中各个单元格的背景,例如,当用户滚动时,必须实时构造每个单元格。但如果仪器显示图像更好,那么在这种情况下,我会 将代码中的渐变绘制成大小和分辨率完美的图像,然后将图像保存在内存中,并以此构建细胞。