1

UIImage resizableImageWithCapInsets 官方文档说明如下。

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

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

4

1 回答 1

0

@jhabbott 在他对问题UIEdgeInsetsMake 如何工作公认答案的评论中做出了很好的猜测?

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

于 2013-10-16T18:59:00.890 回答