Боковое меню в стиле iOS 7/8 с эффектом параллакса, вдохновлённое кадрами Dribbble (первый и второй).
С версии 4.0 вы можете добавлять контроллеры вида меню как с левой, так и с правой стороны от вашего контроллера вида контента.
Создайте и запустите проект RESideMenuExample
в Xcode, чтобы увидеть RESideMenu
в действии. Для демонстрации интеграции с раскадровками создайте и запустите RESideMenuStoryboardsExample
.
Рекомендуемый подход к установке RESideMenu
— через менеджер пакетов CocoaPods, поскольку он обеспечивает гибкое управление зависимостями и простую установку.
Для достижения наилучших результатов рекомендуется устанавливать через CocoaPods >= 0.28.0 с использованием Git >= 1.8.0, установленного через Homebrew.
Установите CocoaPods, если он ещё не доступен:
$ [sudo] gem install cocoapods
$ pod setup
Перейдите в каталог вашего проекта Xcode:
$ cd /path/to/MyProject
$ touch Podfile
$ edit Podfile
Отредактируйте свой Podfile и добавьте RESideMenu:
platform :ios, '6.0'
pod 'RESideMenu', '~> 4.0.7'
Установите в свой проект Xcode:
$ pod install
Откройте свой проект в Xcode из файла .xcworkspace (не обычного файла проекта):
$ open MyProject.xcworkspace
Обратите внимание, что если установка не удалась, это может быть связано с тем, что вы устанавливаете версию Git ниже, чем ожидает CocoaPods. Убедитесь, что у вас установлен Git >= 1.8.0, выполнив команду git --version
. Вы можете получить полную картину деталей установки, выполнив pod install --verbose
.
Всё, что вам нужно сделать, это добавить файлы RESideMenu
в ваш проект и добавить #include "RESideMenu.h"
в начало классов, которые будут его использовать.
В вашем AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
создайте контроллер вида и назначьте контроллеры контента и меню.
// Create content and menu controllers
//
DEMONavigationController *navigationController = [[DEMONavigationController alloc] initWithRootViewController:[[DEMOHomeViewController alloc] init]];
DEMOLeftMenuViewController *leftMenuViewController = [[DEMOLeftMenuViewController alloc] init];
DEMORightMenuViewController *rightMenuViewController = [[DEMORightMenuViewController alloc] init];
// Create side menu controller
//
RESideMenu *sideMenuViewController = [[RESideMenu alloc] initWithContentViewController:navigationController
leftMenuViewController:leftMenuViewController
rightMenuViewController:rightMenuViewController];
sideMenuViewController.backgroundImage = [UIImage imageNamed:@"Stars"];
// Make it a root controller
//
self.window.rootViewController = sideMenuViewController;
Представьте контроллер вида меню:
[self.sideMenuViewController presentLeftMenuViewController];
или
[self.sideMenuViewController presentRightMenuViewController];
Переключите контроллеры видов контента:
#import <RESideMenu/RESideMenu.h>
....
[self.sideMenuViewController setContentViewController:viewController animated:YES];
[self.sideMenuViewController hideMenuViewController];
RESideMenu
. В этом примере мы называем его DEMORootViewController
.DEMORootViewController
.#import "RESideMenu.h"
в DEMORootViewController.h
.Контроллеры добавляются на ваш Storyboard, и им присваиваются идентификаторы «leftMenuViewController», «rightMenuViewController» и «contentViewController». Обратите внимание, что в новом XCode идентификатор называется «Storyboard ID» и его можно найти в инспекторе Identity.
5. Добавьте метод awakeFromNib
в DEMORootViewController.m
со следующим кодом:
- (void)awakeFromNib
{
self.contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"contentViewController"];
self.leftMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"leftMenuViewController"];
self.rightMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"rightMenuViewController"];
}
Вы можете настроить следующие свойства RESideMenu
:
@property (assign, readwrite, nonatomic) NSTimeInterval animationDuration;
@property (strong, readwrite, nonatomic) UIImage *backgroundImage;
@property (assign, readwrite, nonатомный) BOOL panGestureEnabled;
@property (назначить, readwrite, неатомический) BOOL panFromEdge;
@property (назначение, readwrite, неатомическое) NSUInteger panMinimumOpenThreshold;
@property (назначение, readwrite, неатомическое) BOOL interactivePopGestureRecognizerEnabled;
@property (назначение, readwrite, неатомическое) BOOL scaleContentView;
@property (назначение, readwrite, неатомическое) BOOL scaleBackgroundImageView;
@property (назначение, readwrite, неатомическое) BOOL scaleMenuView;
@property (назначение, readwrite, неатомическое) BOOL contentViewShadowEnabled;
@property (назначение, readwrite, неатомическое) UIColor *contentViewShadowColor;
@property (назначение, readwrite, неатомическое) CGSize contentViewShadowOffset;
@property (назначение, readwrite, неатомическое) CGFloat contentViewShadowOpacity;
@property (назначение, readwrite, неатомическое) CGFloat contentViewShadowRadius;
@property (назначение, readwrite, неатомическое) CGFloat contentViewScaleValue;
@property (назначение, readwrite, неатомическое) CGFloat contentViewInLandscapeOffsetCenterX;
@property (назначение, readwrite, неатомическое) CGFloat contentViewInPortraitOffsetCenterX;
@property (назначение, readwrite, неатомическое) CGFloat parallaxMenuMinimumRelativeValue;
@property (назначение, readwrite, неатомическое) CGFloat parallaxMenuMaximumRelativeValue;
@property (назначение, readwrite, неатомическое) CGFloat parallaxContentMinimumRelativeValue;
@property (назначение, readwrite, неатомическое) CGFloat parallaxContentMaximumRelativeValue;
@property (назначение, readwrite, неатомическое) CGAffineTransform menuViewControllerTransformation;
@property (назначение, readwrite, неатомическое) BOOL parallaxEnabled;
@property (назначение, readwrite, неатомическое) BOOL bouncesHorizontally;
@property (назначение, readwrite, неатомическое) UIStatusBarStyle menuPreferredStatusBarStyle;
@property (назначение, readwrite, неатомическое) BOOL menuPrefersStatusBarHidden;
Если вы устанавливаете backgroundImage, не забудьте установить цвет фона контроллера меню View на прозрачный цвет.
Вы можете реализовать протокол RESideMenuDelegate
, чтобы получать следующие сообщения:
- (void)sideMenu:(RESideMenu *)sideMenu didRecognizePanGesture:(UIPanGestureRecognizer *)recognizer;
- (void)sideMenu:(RESideMenu *)sideMenu willShowMenuViewController:(UIViewController *)menuViewController;
- (void)sideMenu:(RESideMenu *)sideMenu didShowMenuViewController:(UIViewController *)menuViewController;
- (void)sideMenu:(RESideMenu *)sideMenu willHideMenuViewController:(UIViewController *)menuViewController;
- (void)sideMenu:(RESideMenu *)sideMenu didHideMenuViewController:(UIViewController *)menuViewController;
Роман Ефимов
RESideMenu доступен по лицензии MIT.
Copyright © 2013 Роман Ефимов.
Настоящим предоставляется разрешение любому лицу, получившему копию данного программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), на использование Программного обеспечения без ограничений, включая без ограничения права на использование, копирование, изменение, объединение, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также на разрешение Лица, которым предоставляется программное обеспечение, могут использовать его при соблюдении следующих условий:
В все копии или существенные части программного обеспечения должно быть включено вышеуказанное уведомление об авторских правах и данное разрешение.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, ВОЗНИКАЮЩИЕ В РЕЗУЛЬТАТЕ ДЕЙСТВИЯ КОНТРАКТА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, СВЯЗАННЫЕ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ОПЕРАЦИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )