Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何知道何时在iOS上绘制屏幕?_Ios_Cocoa Touch - Fatal编程技术网

我如何知道何时在iOS上绘制屏幕?

我如何知道何时在iOS上绘制屏幕?,ios,cocoa-touch,Ios,Cocoa Touch,我想知道何时在iOS上绘制屏幕。特别是,我想知道屏幕上是否有任何可见的变化。例如,了解页面渲染所需的时间(假设用户未与页面交互)非常方便。我希望能够在常规生产构建中捕获这些信息,而不是在开发人员构建中。我希望这是一个通用的解决方案,适用于我的应用程序中的任何页面,而不仅仅是一个特定的页面 例如,我有一个页面,1)异步查询API中的数据,2)在UITableView中显示该数据,其中一些条目可能在屏幕外,然后3)异步下载屏幕上每个可见项目的图像。我希望在渲染UITableView和渲染所有图像时获

我想知道何时在iOS上绘制屏幕。特别是,我想知道屏幕上是否有任何可见的变化。例如,了解页面渲染所需的时间(假设用户未与页面交互)非常方便。我希望能够在常规生产构建中捕获这些信息,而不是在开发人员构建中。我希望这是一个通用的解决方案,适用于我的应用程序中的任何页面,而不仅仅是一个特定的页面

例如,我有一个页面,1)异步查询API中的数据,2)在UITableView中显示该数据,其中一些条目可能在屏幕外,然后3)异步下载屏幕上每个可见项目的图像。我希望在渲染UITableView和渲染所有图像时获得回调。呈现页面的总时间可以通过查看最后一次回调调用的时间戳来确定(同样,假设没有用户交互)

在Android上,这相当简单。无论何时绘制屏幕,都可以使用获取回调。如果屏幕上没有可见的更改,则不会调用回调

在iOS上,它看起来可能有类似的用途。然而,当我连接我的CADisplayLink时,无论屏幕上是否有可见的更改,它似乎总是被反复调用


有没有办法知道在iOS中绘制的屏幕何时会有可见的更改?

在iOS 9中,Apple无法访问应用程序外部绘制到屏幕上的内容。在此之前,可以使用一个名为IOSurface的API来实现,但苹果在ios9中关闭了它。(防止应用程序相互窥探。)


因此,如果你谈论的是任何被吸引到屏幕上的东西,答案是否定的。如果你在应用程序中寻找变化,可能有一种方法可以做到这一点。

问得好。我只是在寻找应用程序中对屏幕所做的更改。谢谢使用下载的资料异步填充表视图的业务非常常见,并且得到了很好的解决(这里对此进行了很好的解释)。我不太明白你需要额外的信息做什么。“呈现页面的总时间”这一概念是毫无意义的,因为屏幕外的单元格不存在,也不呈现。我想创建一个显示第50、90、90页的报告,以及用户在现实世界中加载页面所需时间的第95个百分位数,这样我就可以获得有助于优化应用程序页面加载性能的数据。但是,你需要量化的不是绘图,而是下载。这是很容易做到的事请下次问你真正想知道答案的问题。你会得到更好的帮助,并且浪费更少的时间/带宽。谢谢matt,我相信我问的问题就是我想知道答案的问题。但我很感谢你的帮助。我告诉你,事实并非如此。