【问题标题】:Bottleneck in CA::Transaction::commit()CA::Transaction::commit() 中的瓶颈
【发布时间】:2014-07-27 02:51:42
【问题描述】:

当使用 Time ProfilerUIScrollView(包含许多子视图)交互时,我经常在最重的堆栈跟踪中看到 CA::Transaction::commit()。这是什么方法,我怎样才能花更少的时间?

我有根据的猜测是,这就是核心动画层被发送到 GPU 的方式,并且可以通过减少必须渲染的 CALayers 的维度和/或数量(即数据量必须发送到 GPU)。

【问题讨论】:

  • 尝试在 UIView 中明确使用 CALayers?
  • 你能分享你的 UIScrollView 初始化和交互的代码吗

标签: ios uiscrollview core-animation xcode-instruments


【解决方案1】:

您的猜测可能是正确的。请记住,以下事情通常也在CATransaction::commit()中完成

  • CALayers 的布局:layoutSublayers、preferredFrameSize、CALayoutManager
  • 全部CAActions
  • 有时还会渲染 CALayer 的各种过滤器属性
  • 可能是滚动视图中子视图的布局

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多