Buduję aplikację zawierającą UIWebView
zawierającą dużą liczbę obrazów, CSS, osadzone wideo i obsługę znaczników JavaScript. Wydajność przewijania to stuttery i szukam wglądu w najbardziej skuteczne sposoby, aby to poprawić.Sposoby poprawy wydajności przewijania UIWebView?
Która z poniższych cech powoduje przewijanie opóźnionego UIWebView
? Jakie inne czynniki mogą utrudniać wydajność?
- Ilość obrazów
- powinienem być usunięcie obrazów z DOM jako użytkownik przewija obok nich i dodając je z powrotem, jeśli przewijać z powrotem?
- Rozmiar obrazów
-
zdjęć
- Will Retina jakości w widoku internetowej wpływają na wydajność przewijania dużo więcej niż mniejsze wersje chciał?
- Obraz skalowania
- byłaby zmiana rozmiaru obrazów przed czasem robi dużą różnicę, zamiast polegać na widoku WWW do skali na podstawie deklaracji, jak
width: 100%;
?
- byłaby zmiana rozmiaru obrazów przed czasem robi dużą różnicę, zamiast polegać na widoku WWW do skali na podstawie deklaracji, jak
- CSS
- mam unikać
box-shadow
, ale istnieją inne właściwości CSS, które znane są również niekorzystnego wpływu na wydajność przewijania?
- mam unikać
Jeśli są jakieś inne środki i narzędzia, które mogą być wykorzystywane do profilowania, mam usłyszeć o nich.
nie mogę jeszcze w dół głos, ale jest to poważny nie-nie. To rozwiązanie powoduje, że cały webView jest wciągany w jego CALayer (unieważniający mechanizm wyświetlania kafelków UIWebView), powodując ogromne zużycie pamięci. Opis jego stron, "zawierający dużą liczbę obrazów, CSS, osadzonego wideo i przewijanie kodu JavaScript", spowodowałby nadmierną ilość pamięci w aplikacji. –
Więc mówisz, że wymieniłem pamięć na wydajność? To było coś, co wymyśliłem. Zgadzam się, że to nie jest świetne rozwiązanie, ale był to jedyny sposób na ulepszenie przewijania. A biorąc pod uwagę, że dokładnie wiedziałem, co zostanie załadowane do webview z wyprzedzeniem, a wszystkie zasoby zostały dołączone do aplikacji, nie miałem problemu z robieniem tego w ten sposób. – rjowens
Ten rodzaj handlu jest bardzo niebezpieczny w przypadku UIWebView, ponieważ rośnie w pamięci bardzo szybko i agresywnie. A gdy zawartość stanie się większa i bardziej złożona, wkrótce znajdziesz zaporę na didReceiveMemoryWarning-s i ostatecznie zawiesza się. –