2012-03-16 12 views
29

W systemie Android jest łatwy sposób przeglądania kilku stron danych z tym samym układem przy użyciu ViewPager i Fragments. Użytkownik przesuwa palcem w lewo lub w prawo, a strony się zmieniają. Istnieje tylko jeden kontroler widoku i jeden zasób układu dla wszystkich stron, ale zawartość danych zmienia się, gdy użytkownik przegląda. Istnieje również efekt animacji przesuwający w lewo i w prawo, gdzie można zobaczyć zawartość następnej strony jest już załadowany.Odpowiednik ekranu ViewPager systemu Android na iOS? Przesuwanie/przewijanie stron danych

Jaki jest odpowiednik tego na iOS?

+0

Szukam dokładnie tego samego. Przesyłam aplikację na system iOS na Androida i nie jestem pewien, czy używać ScrollView, Horizontal TableView, PageViewController itp. Nie jestem też pewien, jak sobie poradzić z alokacją dynamiczną lub zwolnieniem widoków, które były automatyczne w systemie Android, ponieważ każdy szczegół view to własny fragment, który został uwolniony, gdy nie jest już potrzebny przez ViewPager i Adapter itp. Co to jest odpowiednik? –

+1

Za pomocą widoku kontenera i UIPageViewController możemy to zrobić .. https://stackoverflow.com/a/45188331/4665694 –

Odpowiedz

36

Użyj UIScrollView z właściwością pagingEnabled ustawioną na TAK. Zazwyczaj wraz z nim jest używany UIPageControl.

Jeśli używasz Google dla "stronicowania UIScrollView", możesz znaleźć wiele samouczków i przykładów. Apple oferuje przykładowy program PageControl.

iOS nie przewiduje jakiejkolwiek klasy adaptera podobny, ale tutaj jest tutorial, który wyjaśnia, jak wdrożyć „wirtualnych stron” tak, że nie masz do wystąpienia wszystkich stron na raz: http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html

21

Powinieneś spojrzeć na UIPageViewController. Dostępne od iOS 5.

+0

Dziękuję, ale wygląda na to, że to nawigacja _między widokami kontrolerów zamiast używania adaptera danych do jednego i ten sam kontroler widoku. Mam nieokreśloną ilość "stron", ich treść jest pobierana z serwisu internetowego. – Vanja

+1

Można utworzyć jedną klasę ViewController z kilkoma obiektami dla każdej strony i dodać ją do kontrolera PageViewController. – Ingolmo

+0

To prawda. Prawdopodobnie jest to sposób na iOS. Będę musiał jednak obsługiwać przynajmniej iOS 4, więc spróbuję sprawdzić, czy mogę użyć UISwipeGestureRecognizer. Dzięki :) – Vanja

6

Stworzyłem niestandardową kontrolkę dla systemu iOS, która działa podobnie do podglądu na Androidzie. Możesz to sprawdzić here.

+1

dobra kontrola! Dzięki –

+1

bardzo pomocny kontroler .. Dzięki Bro ... –

0

wizyta https://github.com/vowed21/HWViewPager

To może pomóc.

Dziedziczony UICollectionView.

reuseable komórkowych (Adapter prawdopodobne Android)

i umożliwiają podgląd część lewej, prawej stronie.

+0

HI Używam również pager HWView jako widok podrzędny w aplikacji z super widoku, gdy nazywam to przeładowaniem danych HWViewpager jego przeładowaniem całego widoku danych. Pomoc Plz, jeśli masz jakiś pomysł na ten temat. –

0

Możesz to zautomatyzować, korzystając z poniższego pomysłu.

Załóżmy, że chcemy nieskończenie pętli przez 3 elementów (komórek) - C0, C1, C2, można generować komórki sztuczne w lewej i prawej strony komórki środkowej, wyniki w następujący sposób:

C0 C1 C2 [C0 C1 C2] C0 C1 C2

komórki wspornika są komórki widzimy przez sito urządzenia, a jeśli przewijania do lewej

C0 [C1 C2 C0] C1 C2 C0 C1 C2

w tej chwili wymuś contentOffset, aby wskazywał prawą stronę danych komórek dummy,

C0 [C1 C2 C0] C0 C1 C2 C1 C2 -> C0 C0 C1 C2 [C1 C2 C0] C1 C2

To będą prace w samym mechanizmie podczas przewijania go do prawej.

W poniższym rozwiązaniu ustawienie szerokości widoku elementu równego widokowi nadrzędnemu rozwiąże problem.

https://github.com/DragonCherry/HFSwipeView

Jeśli tylko chcesz po prostu sprawdzić, jak to działa, kliknij poniższy link i „dotknij, aby grać”.

https://www.cocoacontrols.com/controls/hfswipeview

Tylko używając opcji pagingEnabled w UIScrollView może działać w przypadku pełnowymiarowej punkcie komórkowej, ale to nie będzie działać prawidłowo, jeśli chcesz ustawić węższą szerokość elementu treści niż jego macierzystej (przewijania) widzenia. Proszę sprawdzić tę funkcję, odnosząc się do próbki cocoacontrols dla "Sync" lub "Edge Preview".

Powiązane problemy