有時候我們很要求效能或使用者體驗,希望在顯示下一個視圖前能先將該視圖準備好,因為該視圖可能要花費1秒鐘處理,可是推入下一頁僅需0.1秒的話,使用者就要再等待0.9秒。倒不如先在上一個視圖,當使用者還在注意其他資訊時,就先花1秒鐘準備好下一個視圖,然後點擊馬上顯示下一個視圖。
那麼可以怎麼做到事先載入視圖 (Pre Load View)呢?
因為我發現進入拍攝畫面時,會很久才出現攝影鏡頭,也就是顯示黑幕至少3秒鐘,所以在前一畫面時就先預載相機畫面,當使用者點擊進入相機畫面,馬上就能顯現!
- UIView *view = myViewController.view;
或是
- UIView *view = [myViewController view];
一行程式碼就能解決我的問題囉~
參考:iOS Development: How can I preload a view controller before pushing it onto the navigation stack?。
Comments on: "[iOS] 事先載入視圖 (Pre Load View)" (5)
你好,這個做法是否在開相機的前一個畫面就已經跟使用者要求camera權限了?
另外你的作法是不是純粹把黑幕替換成在上一頁抓到的單張image,所以畫面一樣會停一下直到相機開始運作?
希望能解答我的疑惑,謝謝分享~~
讚讚
嗨~你也好: 😀
當然要先要求過權限才能使用相機喔!否則進到相機業會是黑色,然後跳出提示要求權限。
或許可以使用這個第三方套件,可以事先問權限的樣子:https://github.com/iosphere/ISHPermissionKit
讚讚
我並沒有截取上一頁的圖,只是在上一頁剛載入的同時去預載相機那一頁,所以要是使用者快速點進相機頁,還是會有可能要再等相機開始運作。
讚讚
感謝回復~不過預載相機畫面在效能上不會有影響嗎?
有空也想來試看看,因為目前專案進相機卡滿久的QQ
讚讚
既然有動作,就會影響效能。
我建議若你專案主要功能是相機,那麼App載入時就可以先載相機頁面,使用Singleton模式來實現吧! 😉
讚Liked by 2 people