Похоже, что боковые меню становятся все более распространенным элементом интерфейса, так как больше информации попадает в каждое приложение для iPhone. Facebook включил его в свою последнюю версию, и новое приложение Gmail также включает его . Мне было интересно, есть ли у кого-нибудь мысли о наиболее эффективном способе разработки чего-то подобного, поскольку это становится более распространенным элементом интерфейса. Хотя у меня есть свои мысли о том, как это построить, мне любопытно услышать, что думают другие люди.
objective-c
ios
cocoa-touch
Ник ONeill
источник
источник
Ответы:
Я недавно сталкивался с этим, на самом деле не смотрел на код и не тестировал элемент управления, но похоже, что это может быть очень неплохой отправной точкой.
jtrevealsidebar
Изменить: читатель также должен взглянуть на другие ответы :)
источник
Том Адриаенсен ( Tom Adriaenssen) предлагает для этого отличную библиотеку: Inferis / ViewDeck
Он очень прост в использовании и имеет довольно много подписчиков.
РЕДАКТИРОВАТЬ:
Для чего-то более легкого, проверьте: alternmobile / MMDrawerController
Он не обладает всеми функциями ViewDeck, но его проще модифицировать и расширять.
источник
Я создал библиотеку для этого. Это называется MFSideMenu .
Среди прочего он включает поддержку iphone + ipad, портрет + пейзаж, меню слева или справа, UITabBarController и жесты панорамирования.
источник
Проверьте MMDrawerController:
MMDrawerController
Мы не смогли найти библиотеку, которая нам понравилась, поэтому мы просто свернули свою собственную.
источник
Основная идея , что вы должны кадру или центр набора self.navigationController.view в . Есть два события, которые вы должны обработать. (1) barButtonItem нажмите . (2) жест панорамирования из-за смахивания.
Вы можете отправить контроллер вида на фон следующим образом:
источник
Еще лучше JASidePanels . Легко реализуется и работает как для iPhone, так и для iPad.
Github ссылка: JASidePanels
источник
Реализация Facebook размещает UIPanGestureRecognizer на UINavigationBar. Таким образом, позволяя ловить удары, где это необходимо.
Это позволяет делать такие вещи, как прямое распознавание направления касания в x / z, а также скорость, с которой они произошли.
Кроме того, такой вид работы с UIViews (более одного на экране одновременно с явно разными задачами -> таким образом, разными контроллерами) должен (я испытываю желание сказать, должен) использовать новые функции iOS ViewController-Containment. Любая реализация без этого просто плоха, поскольку она влияет на иерархию представлений способом, не предназначенным для Apple.
Об одном замечании: если вам действительно интересно, как это можно сделать как можно ближе к Facebook, ознакомьтесь с проектом, который я открывал, на Github PKRevealController .
источник
Разработчики создали десятки различных библиотек для реализации навигации в стиле Facebook / Path для приложений iOS. Я могу перечислить все из них, но, как вы просили лучший, вот мои два варианта, которые я использую для реализации бокового навигационного меню:
1) ECSlidingViewController Очень легко реализовать и использовать раскадровки. У меня не было проблем с его реализацией, я не получал ошибок или чего-то подобного. Ссылка, которую я предоставил, содержит почти все объяснения для ее использования.
2) SWRevealViewController Эта библиотека проста в использовании, и вы можете найти учебник ЗДЕСЬ , который показывает, как ее реализовать, со всеми пояснениями вместе с изображениями. Вы можете просто следовать учебнику и поблагодарить меня позже.
источник
Другой вариант - использовать Scringo . Это дает вам боковое меню, как в приложениях YouTube / Facebook, а также все виды встроенных функций в меню, которые вы можете добавить (например, чат, пригласить друзей и т. Д.)
Добавление бокового меню осуществляется простым вызовом [ScringoAgent startSession ...], и все настройки можно выполнить на сайте.
источник
Обратитесь сюда, очень хорошая отправная точка: выдвиньте навигацию, как Facebook и путь
источник
Этот вопрос довольно популярен, но все сводилось к тому, что мне легко импортировать и использовать ... Вот что я использую ... SWRevealController .
Я удивлен, что люди скучают по нему ... Это действительно здорово !!! и прост в использовании. Разработчик даже включает несколько примеров проектов, которые позволяют увидеть, как использовать его в различных сценариях.
источник
Отличное руководство по разработке собственной Slide-Out-Navigation в Swift и Objective-C.
Objective-C
стриж
источник
И Gmail, и Facebook активно используют веб-представления, поэтому сложно сказать, что является нативным кодом и что представляет собой HTML. Однако, глядя на интерфейс, кажется, что они поместили UITableView с шириной, более узкой, чем ширина экрана (320pt), под UIView, который содержит контент, который они хотят отобразить. Выбор разных строк табличного представления, вероятно, заменяет подпредставление представления содержимого.
По крайней мере, так я подойду к проблеме. Трудно диктовать, что это должно быть. Просто прыгайте прямо и начинайте экспериментировать!
источник
Если вы хотите, я сделал это репозиторий на github GSSlideMenu. Он позволяет вам создавать меню в стиле Facebook, НО с веб-представлением «назад» (как правило, все обнаруженные мной репозитории имеют табличное представление как представление «назад»).
источник
это как раз клон боковой панели facebook: библиотека GHSidebarNav
очень прост в использовании. инструкция в
источник
представление справа может быть внутри подкласса UIScrollView. В этом подклассе вы можете переопределить
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
чтобы вернуть YES, только если пользователь коснулся подпредставления. Таким образом, вы можете поместить ваш прозрачный UIScrollView поверх любого другого представления и пройти через любое сенсорное событие, которое происходит вне подпредставления; и вы получаете материал для прокрутки бесплатно.Например:
или:
источник
Попробуйте добавить свое меню (к которому вы проводите пальцем) под основным видом. Начните подписку на сенсорные события в представлении.
Реализуйте
touchesMoved:
и проверьте, является ли первыйgesture
вертикалью (прокрутите главный вид, если необходимо) или горизонтальным (здесь вы хотите показать меню). Если он горизонтальный, начните вызывать другой метод,- (void)scrollAwayMainView:(NSUInteger)pixels
всякий раз, когда вызываетсяtouchesMoved:
, вычисляя количество пикселей от начальной точки, которым должен быть основной вид, и передавая это число в метод. В реализации этих методов запустите следующий код:источник
Проверьте мое решение для этого вопроса:
Как создать собственное слайд-меню без сторонней библиотеки.?
Один единственный класс, который вам нужно только создать подкласс и заполнить контентом.
Вот класс. Для более подробной информации, смотрите ссылку выше.
источник