【问题标题】:How can I get an accurate duration timer for an image that is displayed on the screen?如何为屏幕上显示的图像获得准确的持续时间计时器?
【发布时间】:2018-10-29 00:33:01
【问题描述】:

我正在尝试为仅在短时间内显示在屏幕上的图像获取准确的时间间隔。

假设我希望图像在屏幕上显示大约 150 毫秒,我知道大多数 iOS 设备的刷新率是可变的(通常在 20-60 赫兹之间),所以这意味着不可能达到 150 毫秒完美的标记。我想知道的是,有没有办法测量显示图像的确切时间间隔?理想情况下,我希望它在几毫秒内准确。

提前感谢您提供的任何帮助!

【问题讨论】:

    标签: ios image nstimeinterval


    【解决方案1】:

    如果您使用 Metal,您可以添加一个“展示的处理程序”块,以便在展示可绘制对象时调用(显示在屏幕上)。使用MTLDrawable-addPresentedHandler: 方法来做到这一点。在该块中,您可以查询drawable 的presentedTime 属性。

    如果您使用它首先显示图像然后清除图像(显示黑色或白色或其他),那么您可以比较两个呈现的时间值以确定图像显示多长时间。

    除此之外,您还可以使用MTLCommandBuffer-presentDrawable:atTime:(或者,根据您的需要,-presentDrawable:afterMinimumDuration:)方法安排在特定时间展示可绘制对象。

    【讨论】:

    • 这绝对是完美的。谢谢!
    【解决方案2】:

    您应该考虑使用CADisplayLink。这是一个与屏幕刷新周期同步的计时器。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2014-08-01
    • 1970-01-01
    • 2015-03-29
    • 2013-03-24
    相关资源
    最近更新 更多