【问题标题】:Do the UIKit animation blocks e.g animateWithDuration:animations:completion use CADisplaylink?UIKit 动画块,例如 animateWithDuration:animations:completion 是否使用 CADisplaylink?
【发布时间】:2014-08-25 13:02:02
【问题描述】:

我希望是一个直截了当的问题。我一直在到处寻找这个问题的答案,但似乎找不到。有人知道吗? UIKit 动画块是否使用 displaylink 操作?

【问题讨论】:

    标签: ios uikit core-animation cadisplaylink


    【解决方案1】:

    不,他们没有。

    基于块的 UIView 动画 API 通过 actionForLayer:forKey: 委托方法向层提供 CAAnimation(视图始终是层委托)。


    我之前写过一篇关于 UIKit 动画如何在 objc.io #12 中工作的博客文章(大约前 20% 的文章谈到了视图与其层之间的这种交互)。

    【讨论】:

    • 谢谢大卫。会检查出来。我试图同时运行一个 SKView 和一个 UIView ,其中有很多动画正在进行,这会导致 UIView 的东西真正磨砺和结结巴巴。我假设这是 SpriteKit 基于 displaylink 的计时器和 UIView 动画背后的计时器机制之间的冲突。我是否应该尝试使用 CADisplayLink 实现我的 UIView 动画块以使其一切顺利?
    • 信息这么少很难说。此外,关于性能的假设通常是错误的。使用 Instruments 测量并查看瓶颈是什么。 Core Animation 模板是一个好的开始。查看 Time Profiler 以了解您的应用程序在做什么。根据它告诉您的内容,您可能还会从 CPU 监视器获得一些有用的信息,说明在您的进程之外完成了多少核心动画工作(如果您的应用主要执行 UIView 动画或直接使用核心动画,这可能是相关的,但它也可能什么都不告诉你(无话可说))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多