在 iOS 中渲染大量矩形的最快方法?

The fastest way to render huge amount of rectangles in iOS?

我有很多小矩形,不透明,纯色,不重叠,位置和大小经常变化。以不同的方式呈现它们总是会在真实设备上产生滞后。我尝试了以下方法:

还尝试调整各种 CALayer 选项(例如 edgeAntialiasingMaskdrawsAsynchronouslyshouldRasterize...),但仍无法消除延迟。

那么,是否有可行的方法来做到这一点并获得 no/minimum 滞后?

更新测量值和答案

感谢@Saurav 在评论中提供的提示,我发现 UIView.convert(rect: to:) 方法消耗了 CPU 时间的 35%,而 UIView.setFrame(...) 消耗了另外 15% .

刷新帧时渲染本身不会消耗大量 CPU 时间 - 通过 draw(inRect:) 检查方法并预渲染 UIImageView

你有没有关注这些: 1. 避免创建多个 CALayer 或 UIView 实例。 2. 在 vi​​ewDidLoad 中创建所有 1000 层或视图一次,并在需要时更新框架。

您正在进行的帧计算可能会阻塞线程。