W moim projekcie używam UIPageControl
jako kontenera UIViewController
do przewijania. Użyłem tego samouczka (używając ARC
i storyboardów): http://www.wannabegeek.com/?p=168 i kodu źródłowego: https://github.com/wannabegeek/PageViewController Jak widać, w projekcie są 3 ViewControllers
i są one dodawane jako dziecko na CustomPagerViewController
. W tym projekcie są dodawane tylko 3 ViewControllers
, ale w moim projekcie uzyskałem więcej niż 3 ViewControllers
i ponownie wykorzystuję je z innym tekstem, obrazem, etykietą itp. Problem polega na tym, że w projekcie wszystkie te ViewControllers
są ładowane po załadowaniu CustomPagerViewController
i to kosztuje pamięć, więc szukam innego sposobu, jak poradzić sobie z tym problemem, zamiast ładować je wszystkie naraz?Alternatywny sposób ładowania kontrolek ViewControllers na UIPageControl
Odpowiedz
Nie należy próbować optymalizować alokacji sterownika w ten sposób. Oczywiście zachowanie kontrolerów widoku w pamięci zajmuje miejsce, ale wierzcie mi, nie tak bardzo.
Musimy tutaj odróżnić kontroler od widoku. Widoki mogą zająć dużo pamięci, aby wyświetlić się na ekranie, ale iOS ma już własne mechanizmy umożliwiające zwolnienie tej pamięci, gdy nie jest już wymagana (np. Widok nie jest na ekranie/nie ma okna) .
Kontrolery widoku iOS używane do samodzielnego zwolnienia widoku pamięci (to zachowanie było w [UIViewControllers didReceiveMemoryWarning]), ale nie jest tak już w iOS 6. Teraz jesteś odpowiedzialny za to, że czujesz, że jest to potrzebne Twoja aplikacja. Pamiętaj, że pomimo nilowania tych widoków w tej metodzie (lub dealloc), nie zaoszczędzisz dużo pamięci, ponieważ większość zasobów (graficznych) używanych do wyświetlania widoku na ekranie mogła już zostać wydana przez iOS, i ilość pamięci, którą możesz uwolnić, bliska 0.
Podsumowując, w twoim przypadku zamieniłbym PagerViewController na odpowiedni kontroler kontenera iOS, używając this guide. Kluczem jest połączenie następujących metod:
[UIViewController addChildViewController:]
[UIViewController willMoveToParentViewController]
[UIViewController removeFromParentViewController]
[UIView addSubview:]
[UIView removeFromSuperview]
w odpowiedniej kolejności w zależności od potrzeb. W twoim przypadku możesz dodać/usunąć je w metodzie scrollViewDidScroll. Użyj ich w ten sposób i pozwól magii Apple się wydarzyć.
Równie dobrze można użyć funkcji UIPageViewController, która zapewnia przyjemne, gotowe do użycia funkcje.
- 1. Alternatywny sposób na zrobienie pierwszego dużego repozytu
- 2. Alternatywny sposób na wątki pod Androidem
- 3. UIViews z UIPageControl
- 4. Alternatywny sposób tworzenia niepowtarzalnego identyfikatora jednorazowego użytku
- 5. CGRectMake alternatywny
- 6. Jak korzystać z UIPageControl?
- 7. UIPageController w połączeniu z UIPageControl?
- 8. C# utwórz tablicę kontrolek
- 9. Czy UIPageControl jest bezużyteczny sam?
- 10. iOS UIPageControl HorizontalAlignment nie działa
- 11. Wyłączyć działanie konkretnych kontrolek?
- 12. Zmiana rozmiaru kontrolek DevExpress
- 13. ViewControllers with TextViews w UIPageViewController
- 14. Lokalizowanie kontrolek JavaFx
- 15. Sposób wychwytywania błędu ładowania templateUrl
- 16. Maven - alternatywny katalog .m2
- 17. Alternatywny Photo Alternative Three20?
- 18. JavaScript jeśli alternatywny
- 19. Google Street View: Alternatywny sposób uzyskiwania danych z widoku ulicy
- 20. Dowolny alternatywny sposób sprawdzenia, czy dostawca lokalizacji sieciowej jest włączony?
- 21. Pozycjonowanie obrazu tekst alternatywny
- 22. : jak włączyć alternatywny ekran?
- 23. Alternatywny lub sposób na wymuszenie zaćmienia kreatora kodu źródłowego na 80 znaków?
- 24. Dostęp do UIPageControl utworzonego przez iOS6 UIPageViewController?
- 25. Wyświetl alternatywny obraz
- 26. Typ MIME PHP sprawdzający alternatywny sposób robienia tego?
- 27. iPhone 3.1 SDK: Kategoria UIViewController wpływa na WSZYSTKIE ViewControllers
- 28. Tytuły nie pojawiające się na pasku nawigacyjnym ViewControllers
- 29. Dodaj ramkę dla kropek w UIPageControl
- 30. MS Chart Formatowanie kontrolek osi
zobacz ten link może ci pomóc. http://stackoverflow.com/questions/2942636/how-can-i-change-the-color-of-pagination-dots-of-uipagecontrol – Tirth
Szukam sposobu, w jaki mogę umieścić kontroler widoku na UIPageControl bez dodawania ich wszystkich jako elementów potomnych, ponieważ zajmuje to dużo pamięci ... –
Zanim dodaję odpowiedź: Czy używasz obrazów we wszystkich trzech widokach, jeśli tak, jak duże są? Co mówi Instruments o wszystkich alokacjach w twojej implementacji aplikacji. –