【问题标题】:why resizableImageWithCapInsets's best performance is tiled by 1x1 rather than block by block为什么 resizableImageWithCapInsets 的最佳性能是按 1x1 平铺而不是逐块平铺
【发布时间】:2013-07-12 17:15:07
【问题描述】:

UIImage resizableImageWithCapInsets 官方文档说明如下。

在图像缩放或调整大小期间,被帽子覆盖的区域不会被缩放或调整大小。相反,每个方向上未被帽覆盖的像素区域从左到右和从上到下平铺,以调整图像大小。这种技术通常用于创建可变宽度按钮,这些按钮保留相同的圆角,但其中心区域会根据需要增长或缩小。为获得最佳性能,请使用大小为 1x1 像素的平铺区域。

我不明白为什么使用 1x1 像素平铺区域是最佳性能。我认为逐块平铺,性能优于1x1区域。理论上,逐块比逐点快,对吗?谁能告诉我这个在机器上的实现?

【问题讨论】:

    标签: ios performance image-resizing


    【解决方案1】:

    @jhabbott 在his comment 中对accepted answer 问题How does UIEdgeInsetsMake work? 做出了很好的猜测

    所以,我认为如果平铺区域只是 1x1 像素。然后,resizableImageWithCapInsets: 可以只使用该像素的颜色作为填充颜色。这样,它根本不需要做任何平铺。所以,本质上,它就像设置view.backgroundColor = color。你写过绘图代码吗?基本上,我认为用颜色填充一个区域比用一个矩形像素平铺该区域更容易,因为后者可能需要更多的计算,比如在哪里放置下一个平铺等。但是,我只是在这里猜测。但是,如果您尝试编写绘图代码来用颜色填充rect,而不是将像素的rect 平铺到另一个rect 上,您就会明白我的出发点了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2016-01-27
      • 2019-05-05
      • 1970-01-01
      相关资源
      最近更新 更多