Wygląda na to, że menu przesuwne w bok stają się coraz powszechniejszym elementem interfejsu, ponieważ w każdej aplikacji na iPhone'a gromadzi się więcej informacji. Facebook włączył go do swojej najnowszej wersji, a nowa aplikacja Gmail wydaje się również zawierać go . Zastanawiałem się, czy ktoś miał przemyślenia na temat najbardziej wydajnego sposobu tworzenia czegoś takiego, ponieważ staje się on coraz powszechniejszym elementem interfejsu. Chociaż mam własne przemyślenia na temat tego, jak to zbudować, jestem ciekawy, co myślą inni ludzie.
objective-c
ios
cocoa-touch
Nick ONeill
źródło
źródło
Odpowiedzi:
Niedawno natknąłem się na to, tak naprawdę nie patrzyłem na kod ani nie testowałem kontrolki, ale wygląda na to, że może to być bardzo przyzwoity punkt wyjścia.
jtrevealsidebar
Edycja: Czytelnik powinien również spojrzeć na inne odpowiedzi :)
źródło
Jest do tego świetna biblioteka autorstwa Toma Adriaenssena: Inferis / ViewDeck
Jest bardzo łatwy w użyciu i ma dość dużą liczbę zwolenników.
EDYTOWAĆ:
Jeśli szukasz czegoś nieco lżejszego , sprawdź: wzajemny mobilny / MMDrawerController
Nie ma wszystkich funkcji ViewDeck, ale jest prostszy w modyfikowaniu i rozszerzaniu.
źródło
Stworzyłem do tego bibliotekę. Nazywa się MFSideMenu .
Obejmuje między innymi obsługę iPhone'a i iPada, portretu + krajobrazu, menu po lewej lub prawej stronie, UITabBarController i gestów przesuwania.
źródło
Sprawdź MMDrawerController:
MMDrawerController
Nie mogliśmy znaleźć biblioteki, która nam się podobała, więc po prostu stworzyliśmy własną.
źródło
Klucz pomysł , że trzeba zestaw ramek self.navigationController.view lub centrum . Są dwa zdarzenia , z którymi musisz sobie poradzić. (1) bar Przycisk Naciśnięcie pozycji . (2) gest przesuwania z powodu przeciągnięcia.
Możesz wysłać kontroler widoku w tło w następujący sposób:
źródło
Jeszcze lepszy jest JASidePanels . Łatwa implementacja i działa zarówno na iPhonie, jak i iPadzie.
Link do Github: JASidePanels
źródło
Wdrożenie Facebooka umieszcza UIPanGestureRecognizer na UINavigationBar. W ten sposób pozwalając złapać przeciągnięcia tam, gdzie jest to potrzebne.
Pozwala to na takie rzeczy, jak bezpośrednie rozpoznawanie kierunku dotyku w x / z, a także prędkości, z jaką się pojawiały.
Również taki rodzaj majstrowania przy UIViews (więcej niż jeden na ekranie na raz z ewidentnie różnymi zadaniami -> a więc różnymi kontrolerami) powinien (kuszę się powiedzieć, że musi) korzystać z nowych funkcji iOS ViewController-Containment. Każda implementacja bez tego jest po prostu zła, ponieważ majstruje przy hierarchii widoków w sposób niezamierzony przez Apple.
Na marginesie: jeśli naprawdę ciekawi cię, jak można to zrobić tak blisko Facebooka, jak to tylko możliwe, sprawdź projekt, który otwieram, pochodzący z Github PKRevealController .
źródło
Istnieją dziesiątki różnych bibliotek, które programiści stworzyli, aby zaimplementować nawigację w stylu Facebook / Path dla aplikacji na iOS. Mogę wymienić je wszystkie, ale ponieważ poprosiłeś o najlepszy, oto moje dwie opcje, których używam do implementacji menu nawigacji z bocznym przesuwaniem:
1) ECSlidingViewController Jest bardzo łatwy w implementacji i używaniu również scenorysów. Nie miałem żadnych problemów z jego implementacją, nie otrzymałem żadnych błędów ani niczego w tym stylu. Link, który podałem, zawiera prawie wszystkie wyjaśnienia, jak z niego korzystać.
2) SWRevealViewController Ta biblioteka jest łatwa w użyciu i TUTAJ można znaleźć samouczek , który pokazuje, jak ją wdrożyć wraz z wszystkimi wyjaśnieniami wraz z obrazami. Możesz po prostu postępować zgodnie z samouczkiem i podziękować mi później.
źródło
Inną opcją jest użycie Scringo . Daje ci boczne menu, takie jak w aplikacjach youtube / facebook, a także wszelkiego rodzaju wbudowane funkcje w menu, które możesz dodać (np. Czat, zapraszanie znajomych itp.)
Dodanie menu bocznego polega po prostu na wywołaniu [ScringoAgent startSession ...], a całą konfigurację można przeprowadzić na stronie.
źródło
Zobacz tutaj, bardzo dobry punkt wyjścia: wysuń nawigację, taką jak Facebook i ścieżka
źródło
To pytanie jest dość popularne, ale wszystko sprowadzało się do łatwego importowania i używania dla mnie ... Oto czego używam ... SWRevealController .
Dziwię się, że ludzie za tym tęsknią ... To naprawdę WSPANIAŁE !!! i łatwy w użyciu. Deweloper zawiera nawet kilka przykładowych projektów, które pozwalają zobaczyć, jak używać go w różnych scenariuszach.
źródło
Doskonały przewodnik po tym, jak opracować własną nawigację typu Slide-Out-Navigation w językach Swift i Objective-C.
Cel C
Szybki
źródło
Zarówno Gmail, jak i Facebook intensywnie wykorzystują widoki internetowe, więc trudno powiedzieć, co to jest kod natywny, a co renderowany HTML. Jednak patrząc na interfejs, wygląda na to, że umieścili UITableView o szerokości węższej niż szerokość ekranu (320 punktów) pod UIView, który zawiera zawartość, którą chcą wyświetlić. Wybranie różnych wierszy widoku tabeli prawdopodobnie powoduje zamianę widoku podrzędnego widoku zawartości.
Przynajmniej tak bym podszedł do problemu. Trudno dyktować, co to powinno być. Po prostu wskocz i zacznij eksperymentować!
źródło
Jeśli chcesz, zrobiłem to repozytorium na githubie GSSlideMenu To pozwala na stworzenie menu w stylu Facebooka, ALE z "wstecz" webView (generalnie wszystkie repozytoria, które znalazłem, mają tableView jako widok "z tyłu").
źródło
to jest dokładnie klon paska bocznego facebooka: biblioteka GHSidebarNav
bardzo łatwy w użyciu. instrukcja jest w środku
źródło
widok po prawej stronie mógłby znajdować się wewnątrz podklasy UIScrollView. W tej podklasie można zastąpić,
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
aby zwrócić TAK tylko wtedy, gdy użytkownik dotknął widoku podrzędnego. W ten sposób możesz umieścić swój przezroczysty widok UIScrollView nad dowolnym innym widokiem i przejść przez każde zdarzenie dotykowe, które ma miejsce poza widokiem podrzędnym; a materiały do przewijania otrzymujesz za darmo.Na przykład:
lub:
źródło
Spróbuj dodać swoje menu (do którego przesuń palcem, aby przejść) pod głównym widokiem. Rozpocznij subskrybowanie wydarzeń dotykowych w widoku.
Zaimplementuj
touchesMoved:
i sprawdź, czy pierwszygesture
jest pionowy (przewiń widok główny, jeśli to konieczne), czy poziomy (tutaj chcesz pokazać menu). Jeśli jest pozioma, zacznij wywoływać inną metodę,- (void)scrollAwayMainView:(NSUInteger)pixels
za każdym razem, gdytouchesMoved:
zostanie wywołana, oblicz liczbę pikseli oddalonych od punktu początkowego, w którym powinien znajdować się główny widok, i przekaż tę liczbę do metody. W tej implementacji metod uruchom następujący kod:źródło
Sprawdź moje rozwiązanie na to pytanie:
Jak stworzyć niestandardowe menu slajdów bez biblioteki innej firmy?
Jedna klasa, którą musisz tylko podklasować i wypełnić treścią.
Oto klasa. Aby uzyskać więcej informacji, zobacz powyższy link.
źródło