在iOS中,有没有一种方法可以查明屏幕上是否渲染了任何视图



我想监控UIViewController开始运行init方法到用户真正看到屏幕上显示的内容之间需要多长时间。我知道viewDidAppear是结束计时器的好地方,但在某些情况下,我的应用程序需要从网络中获取数据,然后在下载完成后呈现UITableViewCells或其他视图。我想知道是否有什么通用的方法来处理所有的案件。

viewDidLayoutSubviews就是一个好地方。根据苹果文档,调用viewDidLayoutSubviews是为了通知视图控制器它的视图刚刚布局了它的子视图,所以每次更新(旋转、更改等(视图时都会调用这个方法。这个方法的缺点是它被称为A LOT,对于每一次布局更改,您可能都应该进行一些额外的计算(您是否收到了服务器的响应,您的数据源是否已更新(。这回答了你的具体问题——">在iOS中,有没有办法查明屏幕上是否呈现了任何视图"-但我不建议这样做。

也许你想为你正在使用的API实现一些分析日志记录,所以在我看来,最好的方法是拥有一个日志记录类,实现两种方法(加载开始-加载完成(。并在ViewControllers中调用这些方法。(也许你可以创建一个基本的ViewController类,所有的ViewController都应该继承该ViewController-在该基本的ViewControl中,你只能在viewDidLoad中调用一次loading started方法-因为你覆盖了该viewDidLoad-这将为你节省几行,并有可能忘记在VC中调用该方法(。

操作系统在布局UI时通常足够快(除非你对UI做了一些非常奇怪的事情(,所以唯一减慢加载速度的是WebAPI调用,所以你不应该介意布局方法。请告诉我这是否合理。

最新更新