我想知道什麼時候在iOS上繪製屏幕。特別是,我想知道是否有任何可見的變化正在屏幕上繪製。例如,這可以很方便地知道頁面呈現多長時間(假設用戶不與頁面交互)。我希望能夠在常規生產版本中捕獲這些信息,而不是在開發者版本中捕獲。我希望這是一個通用的解決方案,適用於我應用中的大多數任何頁面,而不僅僅是特定的頁面。我如何知道在iOS上繪製屏幕的時間?
例如,我有一個頁面1)異步查詢數據的API,2)在UITableView中顯示該數據,其中一些條目可能離屏,然後3)異步下載每個圖像屏幕上的可見項目。我想要在渲染UITableView和渲染所有圖像時獲得回調。可以通過查看最後一次調用回調的時間戳來確定呈現頁面的總時間(同樣,假設沒有用戶交互)。
在Android上,這很簡單。每當屏幕被繪製時,您都可以使用ViewTreeObserver.addPreDrawListener來獲取回調。如果屏幕沒有可見的變化,則不會調用回調。
在iOS上,它看起來像CADisplayLink可能會用於類似的目的。但是,當我連接我的CADisplayLink時,它似乎被永遠調用,無論屏幕上是否有可見的變化。
有沒有辦法知道什麼時候在iOS中繪製屏幕有可見的變化?
與下載材料異步填充表視圖的業務是非常普遍的,很好的解決(在這裏很好地解釋)。我不太明白你需要額外的信息。 「呈現頁面的總時間」這個概念有點沒有意義,因爲屏幕外單元不存在並且不被渲染。 – matt
我想創建一個報告,顯示用戶在真實世界中加載頁面需要多長時間的第50,90和95百分位數,以便我可以獲取有助於優化應用頁面加載性能的數據。 – emmby
但是,這不是您需要量化的_drawing_,而是_downloading_。這是很容易完成的事情。 - 請等下一次,問你最想知道答案的問題。你會得到更好的幫助,並浪費更少的時間/帶寬。 – matt