我有一个 UI,其中NSCollectionViewItem
View 的内容是通过 CALayers 以编程方式绘制的。我CAConstraintLayoutManager
在调整大小时使用 a 来保持子图层的布局一致,但是这样做时我的性能非常差。似乎调整窗口大小会导致调整两个CATextLayer
s 的大小以使其适合根层的宽度,并重新定位一个CATextLayer
以使其保持右对齐,这会导致应用程序花费大部分时间来执行该CGSScanConvolveAndIntegrateRGB
功能(我使用了 Time Profiler 仪器)。
最“昂贵”的层(即使是唯一显示的也会导致最卡顿的层)是一个包裹的 multiline CATextLayer
。我完全不知道如何获得更好的性能(我试过不使用 aCAConstraintLayoutManager
和层对齐,但我得到了同样的东西)。有人遇到过这个问题吗?有办法解决吗?
PS:我已经对布局管理器进行了子类化,并在执行期间- (void)layoutSublayersOfLayer:(CALayer *)layer
通过将 YES 设置为禁用了所有动画kCATransactionDisableActions
,CATransaction
但这似乎没有帮助。
编辑:我禁用了文本图层的字体平滑,性能提高了一点(很少),但它在 _ZL9view_drawP7_CAViewdPK11CVTimeStampb 中花费了大量的时间(这是由 ATI Radeon 驱动程序的线程调用的东西,我认为)。