├── .gitignore
├── Demos
├── MFSideMenuDemoBasic
│ ├── MFSideMenuDemoBasic.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ └── MFSideMenuDemoBasic
│ │ ├── DemoViewController.h
│ │ ├── DemoViewController.m
│ │ ├── DemoViewController.xib
│ │ ├── Images
│ │ ├── Default-568h@2x.png
│ │ ├── back-arrow.png
│ │ ├── back-arrow@2x.png
│ │ ├── menu-icon.png
│ │ └── menu-icon@2x.png
│ │ ├── MFAppDelegate.h
│ │ ├── MFAppDelegate.m
│ │ ├── MFSideMenuDemoBasic-Info.plist
│ │ ├── MFSideMenuDemoBasic-Prefix.pch
│ │ ├── SideMenuViewController.h
│ │ ├── SideMenuViewController.m
│ │ ├── en.lproj
│ │ └── InfoPlist.strings
│ │ └── main.m
├── MFSideMenuDemoSearchBar
│ ├── MFSideMenuDemoSearchBar.xcodeproj
│ │ └── project.pbxproj
│ ├── MFSideMenuDemoSearchBar
│ │ ├── Images
│ │ │ ├── Default-568h@2x.png
│ │ │ ├── Default.png
│ │ │ ├── Default@2x.png
│ │ │ ├── back-arrow.png
│ │ │ ├── back-arrow@2x.png
│ │ │ ├── menu-icon.png
│ │ │ └── menu-icon@2x.png
│ │ ├── MFAppDelegate.h
│ │ ├── MFAppDelegate.m
│ │ ├── MFSideMenuDemoSearchBar-Info.plist
│ │ ├── MFSideMenuDemoSearchBar-Prefix.pch
│ │ ├── View Controllers
│ │ │ ├── DemoViewController.h
│ │ │ ├── DemoViewController.m
│ │ │ ├── DemoViewController.xib
│ │ │ ├── SideMenuViewController.h
│ │ │ └── SideMenuViewController.m
│ │ ├── en.lproj
│ │ │ └── InfoPlist.strings
│ │ └── main.m
│ └── Tests
│ │ ├── Default-568h@2x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── MFSideMenuContainerViewControllerTest.m
│ │ ├── Tests-Info.plist
│ │ ├── Tests-Prefix.pch
│ │ ├── en.lproj
│ │ └── InfoPlist.strings
│ │ └── main.m
├── MFSideMenuDemoSplitViewController
│ ├── MFSideMenuDemoSplitViewController.xcodeproj
│ │ └── project.pbxproj
│ └── MFSideMenuDemoSplitViewController
│ │ ├── Default-568h@2x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── MFAppDelegate.h
│ │ ├── MFAppDelegate.m
│ │ ├── MFDetailViewController.h
│ │ ├── MFDetailViewController.m
│ │ ├── MFMasterViewController.h
│ │ ├── MFMasterViewController.m
│ │ ├── MFSideMenuDemoSplitViewController-Info.plist
│ │ ├── MFSideMenuDemoSplitViewController-Prefix.pch
│ │ ├── SideMenuViewController.h
│ │ ├── SideMenuViewController.m
│ │ ├── en.lproj
│ │ ├── InfoPlist.strings
│ │ ├── MFDetailViewController.xib
│ │ └── MFMasterViewController.xib
│ │ └── main.m
├── MFSideMenuDemoStoryboard
│ ├── MFSideMenuDemoStoryboard.xcodeproj
│ │ └── project.pbxproj
│ └── MFSideMenuDemoStoryboard
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── DemoViewController.h
│ │ ├── DemoViewController.m
│ │ ├── Images
│ │ ├── Default-568h@2x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── back-arrow.png
│ │ ├── back-arrow@2x.png
│ │ ├── menu-icon.png
│ │ └── menu-icon@2x.png
│ │ ├── MFSideMenuDemoStoryboard-Info.plist
│ │ ├── MFSideMenuDemoStoryboard-Prefix.pch
│ │ ├── SideMenuViewController.h
│ │ ├── SideMenuViewController.m
│ │ ├── en.lproj
│ │ ├── InfoPlist.strings
│ │ └── MainStoryboard.storyboard
│ │ └── main.m
└── MFSideMenuDemoUITabBarController
│ ├── MFSideMenuDemoUITabBarController.xcodeproj
│ └── project.pbxproj
│ └── MFSideMenuDemoUITabBarController
│ ├── DemoViewController.h
│ ├── DemoViewController.m
│ ├── DemoViewController.xib
│ ├── Images
│ ├── Default-568h@2x.png
│ ├── back-arrow.png
│ ├── back-arrow@2x.png
│ ├── menu-icon.png
│ └── menu-icon@2x.png
│ ├── MFAppDelegate.h
│ ├── MFAppDelegate.m
│ ├── MFSideMenuDemoUITabBarController-Info.plist
│ ├── MFSideMenuDemoUITabBarController-Prefix.pch
│ ├── SideMenuViewController.h
│ ├── SideMenuViewController.m
│ ├── en.lproj
│ └── InfoPlist.strings
│ └── main.m
├── LICENSE
├── MFSideMenu.podspec
├── MFSideMenu.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── MFSideMenu.xccheckout
├── MFSideMenu
├── MFSideMenu.h
├── MFSideMenuContainerViewController.h
├── MFSideMenuContainerViewController.m
├── MFSideMenuShadow.h
├── MFSideMenuShadow.m
├── UIViewController+MFSideMenuAdditions.h
└── UIViewController+MFSideMenuAdditions.m
└── README.mdown
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.swp
3 | *~.nib
4 |
5 | build/
6 | Pods/
7 |
8 | *.pbxuser
9 | *.perspective
10 | *.perspectivev3
11 | *.mode1v3
12 | *.mode2v3
13 | xcuserdata/
14 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/DemoViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | //
7 |
8 | #import
9 |
10 | @interface DemoViewController : UIViewController
11 |
12 | - (IBAction)pushAnotherPressed:(id)sender;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/DemoViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | //
7 |
8 | #import "DemoViewController.h"
9 | #import "MFSideMenu.h"
10 |
11 | @implementation DemoViewController
12 |
13 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
14 | return YES;
15 | }
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | if(!self.title) self.title = @"Demo!";
20 |
21 | [self setupMenuBarButtonItems];
22 | }
23 |
24 |
25 | #pragma mark -
26 | #pragma mark - UIBarButtonItems
27 |
28 | - (void)setupMenuBarButtonItems {
29 | self.navigationItem.rightBarButtonItem = [self rightMenuBarButtonItem];
30 | if(self.menuContainerViewController.menuState == MFSideMenuStateClosed &&
31 | ![[self.navigationController.viewControllers objectAtIndex:0] isEqual:self]) {
32 | self.navigationItem.leftBarButtonItem = [self backBarButtonItem];
33 | } else {
34 | self.navigationItem.leftBarButtonItem = [self leftMenuBarButtonItem];
35 | }
36 | }
37 |
38 | - (UIBarButtonItem *)leftMenuBarButtonItem {
39 | return [[UIBarButtonItem alloc]
40 | initWithImage:[UIImage imageNamed:@"menu-icon.png"] style:UIBarButtonItemStyleBordered
41 | target:self
42 | action:@selector(leftSideMenuButtonPressed:)];
43 | }
44 |
45 | - (UIBarButtonItem *)rightMenuBarButtonItem {
46 | return [[UIBarButtonItem alloc]
47 | initWithImage:[UIImage imageNamed:@"menu-icon.png"] style:UIBarButtonItemStyleBordered
48 | target:self
49 | action:@selector(rightSideMenuButtonPressed:)];
50 | }
51 |
52 | - (UIBarButtonItem *)backBarButtonItem {
53 | return [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-arrow"]
54 | style:UIBarButtonItemStyleBordered
55 | target:self
56 | action:@selector(backButtonPressed:)];
57 | }
58 |
59 |
60 | #pragma mark -
61 | #pragma mark - UIBarButtonItem Callbacks
62 |
63 | - (void)backButtonPressed:(id)sender {
64 | [self.navigationController popViewControllerAnimated:YES];
65 | }
66 |
67 | - (void)leftSideMenuButtonPressed:(id)sender {
68 | [self.menuContainerViewController toggleLeftSideMenuCompletion:^{
69 | [self setupMenuBarButtonItems];
70 | }];
71 | }
72 |
73 | - (void)rightSideMenuButtonPressed:(id)sender {
74 | [self.menuContainerViewController toggleRightSideMenuCompletion:^{
75 | [self setupMenuBarButtonItems];
76 | }];
77 | }
78 |
79 |
80 | #pragma mark -
81 | #pragma mark - IBActions
82 |
83 | - (IBAction)pushAnotherPressed:(id)sender {
84 | DemoViewController *demoController = [[DemoViewController alloc]
85 | initWithNibName:@"DemoViewController"
86 | bundle:nil];
87 |
88 | [self.navigationController pushViewController:demoController animated:YES];
89 | }
90 |
91 | @end
92 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/DemoViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1552
5 | 12C60
6 | 3084
7 | 1187.34
8 | 625.00
9 |
13 |
14 | IBProxyObject
15 | IBUIButton
16 | IBUITextView
17 | IBUIView
18 |
19 |
20 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
21 |
22 |
26 |
27 |
31 |
35 |
142 |
143 |
144 |
145 |
146 |
147 | view
148 |
149 |
150 |
151 | 4
152 |
153 |
154 |
155 | pushAnotherPressed:
156 |
157 |
158 | 7
159 |
160 | 6
161 |
162 |
163 |
164 |
165 |
166 | 0
167 |
168 |
169 |
170 |
171 |
172 | 1
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 | -1
182 |
183 |
184 | File's Owner
185 |
186 |
187 | -2
188 |
189 |
190 |
191 |
192 | 5
193 |
194 |
195 |
196 |
197 |
198 | 7
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 | DemoViewController
207 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
208 | UIResponder
209 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
210 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
211 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
212 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
213 |
214 |
215 |
216 |
217 |
218 | 18
219 |
220 |
221 |
222 |
223 | DemoViewController
224 | UIViewController
225 |
226 | pushAnotherPressed:
227 | id
228 |
229 |
230 | pushAnotherPressed:
231 |
232 | pushAnotherPressed:
233 | id
234 |
235 |
236 |
237 | IBProjectSource
238 | ./Classes/DemoViewController.h
239 |
240 |
241 |
242 |
243 | 0
244 | IBCocoaTouchFramework
245 |
246 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
247 |
248 |
249 | YES
250 | 3
251 | 2083
252 |
253 |
254 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/Default-568h@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/back-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/back-arrow.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/back-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/back-arrow@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/menu-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/menu-icon.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/menu-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/Images/menu-icon@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/MFAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | //
7 |
8 | #import
9 |
10 | @interface MFAppDelegate : UIResponder
11 |
12 | @property (strong, nonatomic) UIWindow *window;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/MFAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.m
3 | //
4 | // Created by Michael Frederick on 4/4/13.
5 | // Copyright (c) 2013 Frederick Development. All rights reserved.
6 | //
7 |
8 | #import "MFAppDelegate.h"
9 | #import "DemoViewController.h"
10 | #import "SideMenuViewController.h"
11 | #import "MFSideMenuContainerViewController.h"
12 |
13 | @implementation MFAppDelegate
14 |
15 | - (DemoViewController *)demoController {
16 | return [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
17 | }
18 |
19 | - (UINavigationController *)navigationController {
20 | return [[UINavigationController alloc]
21 | initWithRootViewController:[self demoController]];
22 | }
23 |
24 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
25 | {
26 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
27 |
28 | SideMenuViewController *leftMenuViewController = [[SideMenuViewController alloc] init];
29 | SideMenuViewController *rightMenuViewController = [[SideMenuViewController alloc] init];
30 | MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
31 | containerWithCenterViewController:[self navigationController]
32 | leftMenuViewController:leftMenuViewController
33 | rightMenuViewController:rightMenuViewController];
34 | self.window.rootViewController = container;
35 | [self.window makeKeyAndVisible];
36 |
37 | return YES;
38 | }
39 | @end
40 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/MFSideMenuDemoBasic-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.mikefrederick.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationPortraitUpsideDown
36 | UIInterfaceOrientationLandscapeRight
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/MFSideMenuDemoBasic-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'MFSideMenuDemo' target in the 'MFSideMenuDemo' project
3 | //
4 |
5 | #import
6 |
7 | #ifndef __IPHONE_3_0
8 | #warning "This project uses features only available in iOS SDK 3.0 and later."
9 | #endif
10 |
11 | #ifdef __OBJC__
12 | #import
13 | #import
14 | #endif
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/SideMenuViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import
8 |
9 | @interface SideMenuViewController : UITableViewController
10 |
11 | @end
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/SideMenuViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import "SideMenuViewController.h"
8 | #import "MFSideMenu.h"
9 | #import "DemoViewController.h"
10 |
11 | @implementation SideMenuViewController
12 |
13 | #pragma mark -
14 | #pragma mark - UITableViewDataSource
15 |
16 | - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
17 | return [NSString stringWithFormat:@"Section %d", section];
18 | }
19 |
20 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
21 | return 2;
22 | }
23 |
24 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
25 | return 10;
26 | }
27 |
28 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
29 | static NSString *CellIdentifier = @"Cell";
30 |
31 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
32 | if (cell == nil) {
33 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
34 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
35 | }
36 |
37 | cell.textLabel.text = [NSString stringWithFormat:@"Item %d", indexPath.row];
38 |
39 | return cell;
40 | }
41 |
42 | #pragma mark -
43 | #pragma mark - UITableViewDelegate
44 |
45 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
46 | DemoViewController *demoController = [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
47 | demoController.title = [NSString stringWithFormat:@"Demo #%d-%d", indexPath.section, indexPath.row];
48 |
49 | UINavigationController *navigationController = self.menuContainerViewController.centerViewController;
50 | NSArray *controllers = [NSArray arrayWithObject:demoController];
51 | navigationController.viewControllers = controllers;
52 | [self.menuContainerViewController setMenuState:MFSideMenuStateClosed];
53 | }
54 |
55 | @end
56 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoBasic/MFSideMenuDemoBasic/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | // Copyright (c) 2012 University of Wisconsin - Madison. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "MFAppDelegate.h"
12 |
13 | int main(int argc, char *argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MFAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/Default-568h@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/Default.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/Default@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/back-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/back-arrow.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/back-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/back-arrow@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/menu-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/menu-icon.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/menu-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/Images/menu-icon@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/MFAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.h
3 | //
4 | // Created by Michael Frederick on 4/4/13.
5 | // Copyright (c) 2013 Frederick Development. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | @class MFViewController;
11 |
12 | @interface MFAppDelegate : UIResponder
13 |
14 | @property (strong, nonatomic) UIWindow *window;
15 |
16 | @property (strong, nonatomic) MFViewController *viewController;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/MFAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.m
3 | //
4 | // Created by Michael Frederick on 4/4/13.
5 | // Copyright (c) 2013 Frederick Development. All rights reserved.
6 | //
7 |
8 | #import "MFAppDelegate.h"
9 | #import "DemoViewController.h"
10 | #import "SideMenuViewController.h"
11 | #import "MFSideMenuContainerViewController.h"
12 |
13 | @implementation MFAppDelegate
14 |
15 | - (DemoViewController *)demoController {
16 | return [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
17 | }
18 |
19 | - (UINavigationController *)navigationController {
20 | return [[UINavigationController alloc]
21 | initWithRootViewController:[self demoController]];
22 | }
23 |
24 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
25 | {
26 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
27 |
28 | SideMenuViewController *leftSideMenuController = [[SideMenuViewController alloc] init];
29 | SideMenuViewController *rightSideMenuController = [[SideMenuViewController alloc] init];
30 | MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
31 | containerWithCenterViewController:[self navigationController]
32 | leftMenuViewController:leftSideMenuController
33 | rightMenuViewController:rightSideMenuController];
34 | self.window.rootViewController = container;
35 | [self.window makeKeyAndVisible];
36 |
37 | return YES;
38 | }
39 | @end
40 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.frederickdevelopment.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'MFSideMenuDemoViewControllerContainment' target in the 'MFSideMenuDemoViewControllerContainment' project
3 | //
4 |
5 | #import
6 |
7 | #ifndef __IPHONE_4_0
8 | #warning "This project uses features only available in iOS SDK 4.0 and later."
9 | #endif
10 |
11 | #ifdef __OBJC__
12 | #import
13 | #import
14 | #endif
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/View Controllers/DemoViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | //
7 |
8 | #import
9 |
10 | @interface DemoViewController : UIViewController
11 |
12 | - (IBAction)pushAnotherPressed:(id)sender;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/View Controllers/DemoViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | //
7 |
8 | #import "DemoViewController.h"
9 | #import "MFSideMenu.h"
10 |
11 | @implementation DemoViewController
12 |
13 |
14 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
15 | return YES;
16 | }
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 | if(!self.title) self.title = @"Demo!";
21 |
22 | [self setupMenuBarButtonItems];
23 | }
24 |
25 | #pragma mark -
26 | #pragma mark - UIBarButtonItems
27 |
28 | - (void)setupMenuBarButtonItems {
29 | self.navigationItem.rightBarButtonItem = [self rightMenuBarButtonItem];
30 | if(self.menuContainerViewController.menuState == MFSideMenuStateClosed &&
31 | ![[self.navigationController.viewControllers objectAtIndex:0] isEqual:self]) {
32 | self.navigationItem.leftBarButtonItem = [self backBarButtonItem];
33 | } else {
34 | self.navigationItem.leftBarButtonItem = [self leftMenuBarButtonItem];
35 | }
36 | }
37 |
38 | - (UIBarButtonItem *)leftMenuBarButtonItem {
39 | return [[UIBarButtonItem alloc]
40 | initWithImage:[UIImage imageNamed:@"menu-icon.png"] style:UIBarButtonItemStyleBordered
41 | target:self
42 | action:@selector(leftSideMenuButtonPressed:)];
43 | }
44 |
45 | - (UIBarButtonItem *)rightMenuBarButtonItem {
46 | return [[UIBarButtonItem alloc]
47 | initWithImage:[UIImage imageNamed:@"menu-icon.png"] style:UIBarButtonItemStyleBordered
48 | target:self
49 | action:@selector(rightSideMenuButtonPressed:)];
50 | }
51 |
52 | - (UIBarButtonItem *)backBarButtonItem {
53 | return [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-arrow"]
54 | style:UIBarButtonItemStyleBordered
55 | target:self
56 | action:@selector(backButtonPressed:)];
57 | }
58 |
59 |
60 | #pragma mark -
61 | #pragma mark - UIBarButtonItem Callbacks
62 |
63 | - (void)backButtonPressed:(id)sender {
64 | [self.navigationController popViewControllerAnimated:YES];
65 | }
66 |
67 | - (void)leftSideMenuButtonPressed:(id)sender {
68 | [self.menuContainerViewController toggleLeftSideMenuCompletion:^{
69 | [self setupMenuBarButtonItems];
70 | }];
71 | }
72 |
73 | - (void)rightSideMenuButtonPressed:(id)sender {
74 | [self.menuContainerViewController toggleRightSideMenuCompletion:^{
75 | [self setupMenuBarButtonItems];
76 | }];
77 | }
78 |
79 |
80 | #pragma mark -
81 | #pragma mark - IBActions
82 |
83 | - (IBAction)pushAnotherPressed:(id)sender {
84 | DemoViewController *demoController = [[DemoViewController alloc]
85 | initWithNibName:@"DemoViewController"
86 | bundle:nil];
87 |
88 | [self.navigationController pushViewController:demoController animated:YES];
89 | }
90 |
91 | @end
92 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/View Controllers/DemoViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1552
5 | 12D78
6 | 3084
7 | 1187.37
8 | 626.00
9 |
10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
11 | 2083
12 |
13 |
14 | IBProxyObject
15 | IBUIButton
16 | IBUITextView
17 | IBUIView
18 |
19 |
20 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
21 |
22 |
23 | PluginDependencyRecalculationVersion
24 |
25 |
26 |
27 |
28 | IBFilesOwner
29 | IBCocoaTouchFramework
30 |
31 |
32 | IBFirstResponder
33 | IBCocoaTouchFramework
34 |
35 |
36 |
37 | 274
38 |
39 |
40 |
41 | 290
42 | {{20, 142}, {280, 37}}
43 |
44 |
45 |
46 | _NS:9
47 | NO
48 | IBCocoaTouchFramework
49 | 0
50 | 0
51 | 1
52 | Push Another Controller
53 |
54 | 3
55 | MQA
56 |
57 |
58 | 1
59 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
60 |
61 |
62 | 3
63 | MC41AA
64 |
65 |
66 | 2
67 | 15
68 |
69 |
70 | Helvetica-Bold
71 | 15
72 | 16
73 |
74 |
75 |
76 |
77 | 290
78 | {{20, 20}, {280, 102}}
79 |
80 |
81 |
82 | _NS:9
83 |
84 | 1
85 | MSAxIDEAA
86 |
87 | YES
88 | YES
89 | NO
90 | IBCocoaTouchFramework
91 | NO
92 |
93 |
94 | 2
95 | IBCocoaTouchFramework
96 |
97 |
98 | 1
99 | 14
100 |
101 |
102 | Helvetica
103 | 14
104 | 16
105 |
106 |
107 |
108 | {{0, 64}, {320, 504}}
109 |
110 |
111 |
112 |
113 | 3
114 | MQA
115 |
116 | 2
117 |
118 |
119 |
120 |
121 | NO
122 |
123 |
124 | IBUIScreenMetrics
125 |
126 | YES
127 |
128 |
129 |
130 |
131 |
132 | {320, 568}
133 | {568, 320}
134 |
135 |
136 | IBCocoaTouchFramework
137 | Retina 4 Full Screen
138 | 2
139 |
140 | IBCocoaTouchFramework
141 |
142 |
143 |
144 |
145 |
146 |
147 | view
148 |
149 |
150 |
151 | 4
152 |
153 |
154 |
155 | pushAnotherPressed:
156 |
157 |
158 | 7
159 |
160 | 6
161 |
162 |
163 |
164 |
165 |
166 | 0
167 |
168 |
169 |
170 |
171 |
172 | 1
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 | -1
182 |
183 |
184 | File's Owner
185 |
186 |
187 | -2
188 |
189 |
190 |
191 |
192 | 5
193 |
194 |
195 |
196 |
197 |
198 | 7
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 | DemoViewController
207 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
208 | UIResponder
209 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
210 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
211 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
212 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
213 |
214 |
215 |
216 |
217 |
218 | 18
219 |
220 |
221 |
222 |
223 | DemoViewController
224 | UIViewController
225 |
226 | id
227 | id
228 | id
229 |
230 |
231 |
232 | pushAnotherPressed:
233 | id
234 |
235 |
236 | showLeftMenuPressed:
237 | id
238 |
239 |
240 | showRightMenuPressed:
241 | id
242 |
243 |
244 |
245 | IBProjectSource
246 | ./Classes/DemoViewController.h
247 |
248 |
249 |
250 |
251 | 0
252 | IBCocoaTouchFramework
253 |
254 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
255 |
256 |
257 | YES
258 | 3
259 | 2083
260 |
261 |
262 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/View Controllers/SideMenuViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import
8 |
9 | @interface SideMenuViewController : UITableViewController
10 |
11 | @end
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/View Controllers/SideMenuViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import "SideMenuViewController.h"
8 | #import "MFSideMenu.h"
9 | #import "DemoViewController.h"
10 |
11 | @interface SideMenuViewController()
12 | @property(nonatomic, strong) UISearchBar *searchBar;
13 | @end
14 |
15 | @implementation SideMenuViewController
16 |
17 | @synthesize searchBar;
18 |
19 | - (void) viewDidLoad {
20 | [super viewDidLoad];
21 |
22 | CGRect searchBarFrame = CGRectMake(0, 0, self.tableView.frame.size.width, 45.0);
23 | self.searchBar = [[UISearchBar alloc] initWithFrame:searchBarFrame];
24 | self.searchBar.delegate = self;
25 |
26 | self.tableView.tableHeaderView = self.searchBar;
27 | }
28 |
29 | #pragma mark -
30 | #pragma mark - UITableViewDataSource
31 |
32 | - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
33 | return [NSString stringWithFormat:@"Section %d", section];
34 | }
35 |
36 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
37 | return 2;
38 | }
39 |
40 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
41 | return 10;
42 | }
43 |
44 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
45 | {
46 | static NSString *CellIdentifier = @"Cell";
47 |
48 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
49 | if (cell == nil) {
50 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
51 | }
52 |
53 | cell.textLabel.text = [NSString stringWithFormat:@"Item %d", indexPath.row];
54 |
55 | return cell;
56 | }
57 |
58 |
59 | #pragma mark -
60 | #pragma mark - UITableViewDelegate
61 |
62 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
63 | DemoViewController *demoController = [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
64 | demoController.title = [NSString stringWithFormat:@"Demo #%d-%d", indexPath.section, indexPath.row];
65 |
66 | UINavigationController *navigationController = self.menuContainerViewController.centerViewController;
67 | NSArray *controllers = [NSArray arrayWithObject:demoController];
68 | navigationController.viewControllers = controllers;
69 | [self.menuContainerViewController setMenuState:MFSideMenuStateClosed];
70 |
71 | if(self.searchBar.isFirstResponder) [self.searchBar resignFirstResponder];
72 | }
73 |
74 |
75 | #pragma mark -
76 | #pragma mark - UISearchBarDelegate
77 |
78 | - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
79 | return YES;
80 | }
81 |
82 | - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
83 | return YES;
84 | }
85 |
86 | - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
87 | [self.searchBar resignFirstResponder];
88 | }
89 |
90 | - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
91 | [self.searchBar resignFirstResponder];
92 | }
93 |
94 | - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
95 | [UIView beginAnimations:nil context:NULL];
96 | [self.menuContainerViewController setMenuWidth:320.0f animated:NO];
97 | [self.searchBar layoutSubviews];
98 | [UIView commitAnimations];
99 |
100 | [self.searchBar setShowsCancelButton:YES animated:YES];
101 |
102 | self.menuContainerViewController.panMode = MFSideMenuPanModeNone;
103 | }
104 |
105 | - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
106 | [UIView beginAnimations:nil context:NULL];
107 | [self.menuContainerViewController setMenuWidth:280.0f animated:NO];
108 | [self.searchBar layoutSubviews];
109 | [UIView commitAnimations];
110 |
111 | [self.searchBar setShowsCancelButton:NO animated:YES];
112 |
113 | self.menuContainerViewController.panMode = MFSideMenuPanModeDefault;
114 | }
115 |
116 | @end
117 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/MFSideMenuDemoSearchBar/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | //
4 | // Created by Michael Frederick on 4/4/13.
5 | // Copyright (c) 2013 Frederick Development. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | #import "MFAppDelegate.h"
11 |
12 | int main(int argc, char *argv[])
13 | {
14 | @autoreleasepool {
15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MFAppDelegate class]));
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/Tests/Default-568h@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/Tests/Default.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSearchBar/Tests/Default@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/MFSideMenuContainerViewControllerTest.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFSideMenuContainerViewControllerTest.m
3 | // MFSideMenuDemoSearchBar
4 | //
5 | // Created by Michael Frederick on 5/3/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "MFSideMenuContainerViewController.h"
12 | #import "SideMenuViewController.h"
13 | #import "DemoViewController.h"
14 |
15 | typedef enum {
16 | MFSideMenuPanDirectionNone,
17 | MFSideMenuPanDirectionLeft,
18 | MFSideMenuPanDirectionRight
19 | } MFSideMenuPanDirection;
20 |
21 | @interface MFSideMenuContainerViewController()
22 | @property (nonatomic, strong) UIViewController *leftMenuViewController;
23 | @property (nonatomic, strong) UIViewController *centerViewController;
24 | @property (nonatomic, strong) UIViewController *rightMenuViewController;
25 | @property (nonatomic, strong) UIView *menuContainerView;
26 | @property (nonatomic, assign) CGPoint panGestureOrigin;
27 | @property (nonatomic, assign) CGFloat panGestureVelocity;
28 | @property (nonatomic, assign) MFSideMenuPanDirection panDirection;
29 | @end
30 |
31 | @interface MFSideMenuContainerViewControllerTest : GHTestCase
32 | @property (nonatomic, strong) MFSideMenuContainerViewController *container;
33 | @end
34 |
35 |
36 | @implementation MFSideMenuContainerViewControllerTest
37 |
38 | - (BOOL)shouldRunOnMainThread {
39 | // By default NO, but if you have a UI test or test dependent on running on the main thread return YES.
40 | // Also an async test that calls back on the main thread, you'll probably want to return YES.
41 | return NO;
42 | }
43 |
44 | - (void)setUpClass {
45 | SideMenuViewController *leftSideMenuController = [[SideMenuViewController alloc] init];
46 | SideMenuViewController *rightSideMenuController = [[SideMenuViewController alloc] init];
47 | DemoViewController *demoViewController = [[DemoViewController alloc] initWithNibName:@"DemoViewController"
48 | bundle:nil];
49 | UINavigationController *navigationController = [[UINavigationController alloc]
50 | initWithRootViewController:demoViewController];
51 | self.container = [MFSideMenuContainerViewController
52 | containerWithCenterViewController:leftSideMenuController
53 | leftMenuViewController:navigationController
54 | rightMenuViewController:rightSideMenuController];
55 | }
56 |
57 | - (void)tearDownClass {
58 | // Run at end of all tests in the class
59 | }
60 |
61 | - (void)setUp {
62 | // Run before each test method
63 | }
64 |
65 | - (void)tearDown {
66 | // Run after each test method
67 | }
68 |
69 | - (void)testInitialize {
70 |
71 | }
72 |
73 |
74 | @end
75 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/Tests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.frederickdevelopment.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/Tests-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'Tests' target in the 'Tests' project
3 | //
4 |
5 | #import
6 |
7 | #ifndef __IPHONE_3_0
8 | #warning "This project uses features only available in iOS SDK 3.0 and later."
9 | #endif
10 |
11 | #ifdef __OBJC__
12 | #import
13 | #import
14 | #endif
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSearchBar/Tests/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // Tests
4 | //
5 | // Created by Michael Frederick on 5/3/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "MFAppDelegate.h"
12 |
13 | int main(int argc, char *argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, @"GHUnitIOSAppDelegate");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 274419D317BBAF8C0007ADE7 /* MFSideMenuShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 274419D217BBAF8C0007ADE7 /* MFSideMenuShadow.m */; };
11 | 27C808DC170AF4A3000584DA /* MFSideMenuContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C808DB170AF4A3000584DA /* MFSideMenuContainerViewController.m */; };
12 | 27FDAE741706737700F84DFA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27FDAE731706737700F84DFA /* UIKit.framework */; };
13 | 27FDAE761706737700F84DFA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27FDAE751706737700F84DFA /* Foundation.framework */; };
14 | 27FDAE781706737700F84DFA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27FDAE771706737700F84DFA /* CoreGraphics.framework */; };
15 | 27FDAE7E1706737700F84DFA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 27FDAE7C1706737700F84DFA /* InfoPlist.strings */; };
16 | 27FDAE801706737700F84DFA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FDAE7F1706737700F84DFA /* main.m */; };
17 | 27FDAE841706737700F84DFA /* MFAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FDAE831706737700F84DFA /* MFAppDelegate.m */; };
18 | 27FDAE861706737700F84DFA /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 27FDAE851706737700F84DFA /* Default.png */; };
19 | 27FDAE881706737700F84DFA /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 27FDAE871706737700F84DFA /* Default@2x.png */; };
20 | 27FDAE8A1706737700F84DFA /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 27FDAE891706737700F84DFA /* Default-568h@2x.png */; };
21 | 27FDAE8D1706737700F84DFA /* MFMasterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FDAE8C1706737700F84DFA /* MFMasterViewController.m */; };
22 | 27FDAE901706737700F84DFA /* MFDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FDAE8F1706737700F84DFA /* MFDetailViewController.m */; };
23 | 27FDAE931706737700F84DFA /* MFMasterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27FDAE911706737700F84DFA /* MFMasterViewController.xib */; };
24 | 27FDAE961706737700F84DFA /* MFDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27FDAE941706737700F84DFA /* MFDetailViewController.xib */; };
25 | 27FDAEA51706741900F84DFA /* SideMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FDAEA41706741900F84DFA /* SideMenuViewController.m */; };
26 | D081F057178E6BE4004A89D0 /* UIViewController+MFSideMenuAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D081F056178E6BE4004A89D0 /* UIViewController+MFSideMenuAdditions.m */; };
27 | /* End PBXBuildFile section */
28 |
29 | /* Begin PBXFileReference section */
30 | 274419D117BBAF8C0007ADE7 /* MFSideMenuShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenuShadow.h; sourceTree = ""; };
31 | 274419D217BBAF8C0007ADE7 /* MFSideMenuShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFSideMenuShadow.m; sourceTree = ""; };
32 | 2769860D1737D77F00536685 /* MFSideMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenu.h; sourceTree = ""; };
33 | 27C808DA170AF4A3000584DA /* MFSideMenuContainerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenuContainerViewController.h; sourceTree = ""; };
34 | 27C808DB170AF4A3000584DA /* MFSideMenuContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFSideMenuContainerViewController.m; sourceTree = ""; };
35 | 27FDAE701706737700F84DFA /* MFSideMenuDemoSplitViewController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MFSideMenuDemoSplitViewController.app; sourceTree = BUILT_PRODUCTS_DIR; };
36 | 27FDAE731706737700F84DFA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
37 | 27FDAE751706737700F84DFA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
38 | 27FDAE771706737700F84DFA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
39 | 27FDAE7B1706737700F84DFA /* MFSideMenuDemoSplitViewController-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MFSideMenuDemoSplitViewController-Info.plist"; sourceTree = ""; };
40 | 27FDAE7D1706737700F84DFA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
41 | 27FDAE7F1706737700F84DFA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
42 | 27FDAE811706737700F84DFA /* MFSideMenuDemoSplitViewController-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MFSideMenuDemoSplitViewController-Prefix.pch"; sourceTree = ""; };
43 | 27FDAE821706737700F84DFA /* MFAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFAppDelegate.h; sourceTree = ""; };
44 | 27FDAE831706737700F84DFA /* MFAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MFAppDelegate.m; sourceTree = ""; };
45 | 27FDAE851706737700F84DFA /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; };
46 | 27FDAE871706737700F84DFA /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; };
47 | 27FDAE891706737700F84DFA /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; };
48 | 27FDAE8B1706737700F84DFA /* MFMasterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFMasterViewController.h; sourceTree = ""; };
49 | 27FDAE8C1706737700F84DFA /* MFMasterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MFMasterViewController.m; sourceTree = ""; };
50 | 27FDAE8E1706737700F84DFA /* MFDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFDetailViewController.h; sourceTree = ""; };
51 | 27FDAE8F1706737700F84DFA /* MFDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MFDetailViewController.m; sourceTree = ""; };
52 | 27FDAE921706737700F84DFA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MFMasterViewController.xib; sourceTree = ""; };
53 | 27FDAE951706737700F84DFA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MFDetailViewController.xib; sourceTree = ""; };
54 | 27FDAEA31706741900F84DFA /* SideMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SideMenuViewController.h; sourceTree = ""; };
55 | 27FDAEA41706741900F84DFA /* SideMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SideMenuViewController.m; sourceTree = ""; };
56 | D081F055178E6BE4004A89D0 /* UIViewController+MFSideMenuAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+MFSideMenuAdditions.h"; sourceTree = ""; };
57 | D081F056178E6BE4004A89D0 /* UIViewController+MFSideMenuAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+MFSideMenuAdditions.m"; sourceTree = ""; };
58 | /* End PBXFileReference section */
59 |
60 | /* Begin PBXFrameworksBuildPhase section */
61 | 27FDAE6D1706737700F84DFA /* Frameworks */ = {
62 | isa = PBXFrameworksBuildPhase;
63 | buildActionMask = 2147483647;
64 | files = (
65 | 27FDAE741706737700F84DFA /* UIKit.framework in Frameworks */,
66 | 27FDAE761706737700F84DFA /* Foundation.framework in Frameworks */,
67 | 27FDAE781706737700F84DFA /* CoreGraphics.framework in Frameworks */,
68 | );
69 | runOnlyForDeploymentPostprocessing = 0;
70 | };
71 | /* End PBXFrameworksBuildPhase section */
72 |
73 | /* Begin PBXGroup section */
74 | 27FDAE671706737700F84DFA = {
75 | isa = PBXGroup;
76 | children = (
77 | 27FDAE9C1706739B00F84DFA /* MFSideMenu */,
78 | 27FDAE791706737700F84DFA /* MFSideMenuDemoSplitViewController */,
79 | 27FDAE721706737700F84DFA /* Frameworks */,
80 | 27FDAE711706737700F84DFA /* Products */,
81 | );
82 | sourceTree = "";
83 | };
84 | 27FDAE711706737700F84DFA /* Products */ = {
85 | isa = PBXGroup;
86 | children = (
87 | 27FDAE701706737700F84DFA /* MFSideMenuDemoSplitViewController.app */,
88 | );
89 | name = Products;
90 | sourceTree = "";
91 | };
92 | 27FDAE721706737700F84DFA /* Frameworks */ = {
93 | isa = PBXGroup;
94 | children = (
95 | 27FDAE731706737700F84DFA /* UIKit.framework */,
96 | 27FDAE751706737700F84DFA /* Foundation.framework */,
97 | 27FDAE771706737700F84DFA /* CoreGraphics.framework */,
98 | );
99 | name = Frameworks;
100 | sourceTree = "";
101 | };
102 | 27FDAE791706737700F84DFA /* MFSideMenuDemoSplitViewController */ = {
103 | isa = PBXGroup;
104 | children = (
105 | 27FDAE821706737700F84DFA /* MFAppDelegate.h */,
106 | 27FDAE831706737700F84DFA /* MFAppDelegate.m */,
107 | 27FDAE8B1706737700F84DFA /* MFMasterViewController.h */,
108 | 27FDAE8C1706737700F84DFA /* MFMasterViewController.m */,
109 | 27FDAE8E1706737700F84DFA /* MFDetailViewController.h */,
110 | 27FDAE8F1706737700F84DFA /* MFDetailViewController.m */,
111 | 27FDAE911706737700F84DFA /* MFMasterViewController.xib */,
112 | 27FDAE941706737700F84DFA /* MFDetailViewController.xib */,
113 | 27FDAEA31706741900F84DFA /* SideMenuViewController.h */,
114 | 27FDAEA41706741900F84DFA /* SideMenuViewController.m */,
115 | 27FDAE7A1706737700F84DFA /* Supporting Files */,
116 | );
117 | path = MFSideMenuDemoSplitViewController;
118 | sourceTree = "";
119 | };
120 | 27FDAE7A1706737700F84DFA /* Supporting Files */ = {
121 | isa = PBXGroup;
122 | children = (
123 | 27FDAE7B1706737700F84DFA /* MFSideMenuDemoSplitViewController-Info.plist */,
124 | 27FDAE7C1706737700F84DFA /* InfoPlist.strings */,
125 | 27FDAE7F1706737700F84DFA /* main.m */,
126 | 27FDAE811706737700F84DFA /* MFSideMenuDemoSplitViewController-Prefix.pch */,
127 | 27FDAE851706737700F84DFA /* Default.png */,
128 | 27FDAE871706737700F84DFA /* Default@2x.png */,
129 | 27FDAE891706737700F84DFA /* Default-568h@2x.png */,
130 | );
131 | name = "Supporting Files";
132 | sourceTree = "";
133 | };
134 | 27FDAE9C1706739B00F84DFA /* MFSideMenu */ = {
135 | isa = PBXGroup;
136 | children = (
137 | 2769860D1737D77F00536685 /* MFSideMenu.h */,
138 | 27C808DA170AF4A3000584DA /* MFSideMenuContainerViewController.h */,
139 | 27C808DB170AF4A3000584DA /* MFSideMenuContainerViewController.m */,
140 | D081F055178E6BE4004A89D0 /* UIViewController+MFSideMenuAdditions.h */,
141 | D081F056178E6BE4004A89D0 /* UIViewController+MFSideMenuAdditions.m */,
142 | 274419D117BBAF8C0007ADE7 /* MFSideMenuShadow.h */,
143 | 274419D217BBAF8C0007ADE7 /* MFSideMenuShadow.m */,
144 | );
145 | name = MFSideMenu;
146 | path = ../../MFSideMenu;
147 | sourceTree = "";
148 | };
149 | /* End PBXGroup section */
150 |
151 | /* Begin PBXNativeTarget section */
152 | 27FDAE6F1706737700F84DFA /* MFSideMenuDemoSplitViewController */ = {
153 | isa = PBXNativeTarget;
154 | buildConfigurationList = 27FDAE991706737700F84DFA /* Build configuration list for PBXNativeTarget "MFSideMenuDemoSplitViewController" */;
155 | buildPhases = (
156 | 27FDAE6C1706737700F84DFA /* Sources */,
157 | 27FDAE6D1706737700F84DFA /* Frameworks */,
158 | 27FDAE6E1706737700F84DFA /* Resources */,
159 | );
160 | buildRules = (
161 | );
162 | dependencies = (
163 | );
164 | name = MFSideMenuDemoSplitViewController;
165 | productName = MFSideMenuDemoSplitViewController;
166 | productReference = 27FDAE701706737700F84DFA /* MFSideMenuDemoSplitViewController.app */;
167 | productType = "com.apple.product-type.application";
168 | };
169 | /* End PBXNativeTarget section */
170 |
171 | /* Begin PBXProject section */
172 | 27FDAE681706737700F84DFA /* Project object */ = {
173 | isa = PBXProject;
174 | attributes = {
175 | CLASSPREFIX = MF;
176 | LastUpgradeCheck = 0460;
177 | ORGANIZATIONNAME = "Frederick Development";
178 | };
179 | buildConfigurationList = 27FDAE6B1706737700F84DFA /* Build configuration list for PBXProject "MFSideMenuDemoSplitViewController" */;
180 | compatibilityVersion = "Xcode 3.2";
181 | developmentRegion = English;
182 | hasScannedForEncodings = 0;
183 | knownRegions = (
184 | en,
185 | );
186 | mainGroup = 27FDAE671706737700F84DFA;
187 | productRefGroup = 27FDAE711706737700F84DFA /* Products */;
188 | projectDirPath = "";
189 | projectRoot = "";
190 | targets = (
191 | 27FDAE6F1706737700F84DFA /* MFSideMenuDemoSplitViewController */,
192 | );
193 | };
194 | /* End PBXProject section */
195 |
196 | /* Begin PBXResourcesBuildPhase section */
197 | 27FDAE6E1706737700F84DFA /* Resources */ = {
198 | isa = PBXResourcesBuildPhase;
199 | buildActionMask = 2147483647;
200 | files = (
201 | 27FDAE7E1706737700F84DFA /* InfoPlist.strings in Resources */,
202 | 27FDAE861706737700F84DFA /* Default.png in Resources */,
203 | 27FDAE881706737700F84DFA /* Default@2x.png in Resources */,
204 | 27FDAE8A1706737700F84DFA /* Default-568h@2x.png in Resources */,
205 | 27FDAE931706737700F84DFA /* MFMasterViewController.xib in Resources */,
206 | 27FDAE961706737700F84DFA /* MFDetailViewController.xib in Resources */,
207 | );
208 | runOnlyForDeploymentPostprocessing = 0;
209 | };
210 | /* End PBXResourcesBuildPhase section */
211 |
212 | /* Begin PBXSourcesBuildPhase section */
213 | 27FDAE6C1706737700F84DFA /* Sources */ = {
214 | isa = PBXSourcesBuildPhase;
215 | buildActionMask = 2147483647;
216 | files = (
217 | 274419D317BBAF8C0007ADE7 /* MFSideMenuShadow.m in Sources */,
218 | 27FDAE801706737700F84DFA /* main.m in Sources */,
219 | 27FDAE841706737700F84DFA /* MFAppDelegate.m in Sources */,
220 | 27FDAE8D1706737700F84DFA /* MFMasterViewController.m in Sources */,
221 | 27FDAE901706737700F84DFA /* MFDetailViewController.m in Sources */,
222 | 27FDAEA51706741900F84DFA /* SideMenuViewController.m in Sources */,
223 | 27C808DC170AF4A3000584DA /* MFSideMenuContainerViewController.m in Sources */,
224 | D081F057178E6BE4004A89D0 /* UIViewController+MFSideMenuAdditions.m in Sources */,
225 | );
226 | runOnlyForDeploymentPostprocessing = 0;
227 | };
228 | /* End PBXSourcesBuildPhase section */
229 |
230 | /* Begin PBXVariantGroup section */
231 | 27FDAE7C1706737700F84DFA /* InfoPlist.strings */ = {
232 | isa = PBXVariantGroup;
233 | children = (
234 | 27FDAE7D1706737700F84DFA /* en */,
235 | );
236 | name = InfoPlist.strings;
237 | sourceTree = "";
238 | };
239 | 27FDAE911706737700F84DFA /* MFMasterViewController.xib */ = {
240 | isa = PBXVariantGroup;
241 | children = (
242 | 27FDAE921706737700F84DFA /* en */,
243 | );
244 | name = MFMasterViewController.xib;
245 | sourceTree = "";
246 | };
247 | 27FDAE941706737700F84DFA /* MFDetailViewController.xib */ = {
248 | isa = PBXVariantGroup;
249 | children = (
250 | 27FDAE951706737700F84DFA /* en */,
251 | );
252 | name = MFDetailViewController.xib;
253 | sourceTree = "";
254 | };
255 | /* End PBXVariantGroup section */
256 |
257 | /* Begin XCBuildConfiguration section */
258 | 27FDAE971706737700F84DFA /* Debug */ = {
259 | isa = XCBuildConfiguration;
260 | buildSettings = {
261 | ALWAYS_SEARCH_USER_PATHS = NO;
262 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
263 | CLANG_CXX_LIBRARY = "libc++";
264 | CLANG_ENABLE_OBJC_ARC = YES;
265 | CLANG_WARN_CONSTANT_CONVERSION = YES;
266 | CLANG_WARN_EMPTY_BODY = YES;
267 | CLANG_WARN_ENUM_CONVERSION = YES;
268 | CLANG_WARN_INT_CONVERSION = YES;
269 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
270 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
271 | COPY_PHASE_STRIP = NO;
272 | GCC_C_LANGUAGE_STANDARD = gnu99;
273 | GCC_DYNAMIC_NO_PIC = NO;
274 | GCC_OPTIMIZATION_LEVEL = 0;
275 | GCC_PREPROCESSOR_DEFINITIONS = (
276 | "DEBUG=1",
277 | "$(inherited)",
278 | );
279 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
280 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
281 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
282 | GCC_WARN_UNUSED_VARIABLE = YES;
283 | IPHONEOS_DEPLOYMENT_TARGET = 6.1;
284 | ONLY_ACTIVE_ARCH = YES;
285 | SDKROOT = iphoneos;
286 | TARGETED_DEVICE_FAMILY = 2;
287 | };
288 | name = Debug;
289 | };
290 | 27FDAE981706737700F84DFA /* Release */ = {
291 | isa = XCBuildConfiguration;
292 | buildSettings = {
293 | ALWAYS_SEARCH_USER_PATHS = NO;
294 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
295 | CLANG_CXX_LIBRARY = "libc++";
296 | CLANG_ENABLE_OBJC_ARC = YES;
297 | CLANG_WARN_CONSTANT_CONVERSION = YES;
298 | CLANG_WARN_EMPTY_BODY = YES;
299 | CLANG_WARN_ENUM_CONVERSION = YES;
300 | CLANG_WARN_INT_CONVERSION = YES;
301 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
302 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
303 | COPY_PHASE_STRIP = YES;
304 | GCC_C_LANGUAGE_STANDARD = gnu99;
305 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
306 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
307 | GCC_WARN_UNUSED_VARIABLE = YES;
308 | IPHONEOS_DEPLOYMENT_TARGET = 6.1;
309 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
310 | SDKROOT = iphoneos;
311 | TARGETED_DEVICE_FAMILY = 2;
312 | VALIDATE_PRODUCT = YES;
313 | };
314 | name = Release;
315 | };
316 | 27FDAE9A1706737700F84DFA /* Debug */ = {
317 | isa = XCBuildConfiguration;
318 | buildSettings = {
319 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
320 | GCC_PREFIX_HEADER = "MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController-Prefix.pch";
321 | INFOPLIST_FILE = "MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController-Info.plist";
322 | IPHONEOS_DEPLOYMENT_TARGET = 5.1;
323 | PRODUCT_NAME = "$(TARGET_NAME)";
324 | WRAPPER_EXTENSION = app;
325 | };
326 | name = Debug;
327 | };
328 | 27FDAE9B1706737700F84DFA /* Release */ = {
329 | isa = XCBuildConfiguration;
330 | buildSettings = {
331 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
332 | GCC_PREFIX_HEADER = "MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController-Prefix.pch";
333 | INFOPLIST_FILE = "MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController-Info.plist";
334 | IPHONEOS_DEPLOYMENT_TARGET = 5.1;
335 | PRODUCT_NAME = "$(TARGET_NAME)";
336 | WRAPPER_EXTENSION = app;
337 | };
338 | name = Release;
339 | };
340 | /* End XCBuildConfiguration section */
341 |
342 | /* Begin XCConfigurationList section */
343 | 27FDAE6B1706737700F84DFA /* Build configuration list for PBXProject "MFSideMenuDemoSplitViewController" */ = {
344 | isa = XCConfigurationList;
345 | buildConfigurations = (
346 | 27FDAE971706737700F84DFA /* Debug */,
347 | 27FDAE981706737700F84DFA /* Release */,
348 | );
349 | defaultConfigurationIsVisible = 0;
350 | defaultConfigurationName = Release;
351 | };
352 | 27FDAE991706737700F84DFA /* Build configuration list for PBXNativeTarget "MFSideMenuDemoSplitViewController" */ = {
353 | isa = XCConfigurationList;
354 | buildConfigurations = (
355 | 27FDAE9A1706737700F84DFA /* Debug */,
356 | 27FDAE9B1706737700F84DFA /* Release */,
357 | );
358 | defaultConfigurationIsVisible = 0;
359 | defaultConfigurationName = Release;
360 | };
361 | /* End XCConfigurationList section */
362 | };
363 | rootObject = 27FDAE681706737700F84DFA /* Project object */;
364 | }
365 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/Default-568h@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/Default.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/Default@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.h
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 3/29/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MFAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @property (strong, nonatomic) UISplitViewController *splitViewController;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.m
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 3/29/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import "MFAppDelegate.h"
10 | #import "MFMasterViewController.h"
11 | #import "MFDetailViewController.h"
12 | #import "MFSideMenuContainerViewController.h"
13 | #import "SideMenuViewController.h"
14 |
15 | @implementation MFAppDelegate
16 |
17 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
18 | {
19 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
20 | // Override point for customization after application launch.
21 |
22 | MFMasterViewController *masterViewController = [[MFMasterViewController alloc] initWithNibName:@"MFMasterViewController" bundle:nil];
23 | UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
24 |
25 | MFDetailViewController *detailViewController = [[MFDetailViewController alloc] initWithNibName:@"MFDetailViewController" bundle:nil];
26 | UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
27 |
28 | masterViewController.detailViewController = detailViewController;
29 |
30 | self.splitViewController = [[UISplitViewController alloc] init];
31 | self.splitViewController.delegate = detailViewController;
32 | CGRect frame = self.splitViewController.view.frame;
33 | frame.origin = CGPointZero;
34 | self.splitViewController.view.frame = frame;
35 | self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];
36 |
37 | SideMenuViewController *leftSideMenuController = [[SideMenuViewController alloc] init];
38 | SideMenuViewController *rightSideMenuController = [[SideMenuViewController alloc] init];
39 | MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
40 | containerWithCenterViewController:self.splitViewController
41 | leftMenuViewController:leftSideMenuController
42 | rightMenuViewController:rightSideMenuController];
43 | self.window.rootViewController = container;
44 | [self.window makeKeyAndVisible];
45 | return YES;
46 | }
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFDetailViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFDetailViewController.h
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 3/29/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MFDetailViewController : UIViewController
12 |
13 | @property (strong, nonatomic) id detailItem;
14 |
15 | @property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel;
16 | @end
17 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFDetailViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFDetailViewController.m
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 3/29/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import "MFDetailViewController.h"
10 |
11 | @interface MFDetailViewController ()
12 | @property (strong, nonatomic) UIPopoverController *masterPopoverController;
13 | - (void)configureView;
14 | @end
15 |
16 | @implementation MFDetailViewController
17 |
18 | #pragma mark - Managing the detail item
19 |
20 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
21 | return YES;
22 | }
23 |
24 | - (void)setDetailItem:(id)newDetailItem
25 | {
26 | if (_detailItem != newDetailItem) {
27 | _detailItem = newDetailItem;
28 |
29 | // Update the view.
30 | [self configureView];
31 | }
32 |
33 | if (self.masterPopoverController != nil) {
34 | [self.masterPopoverController dismissPopoverAnimated:YES];
35 | }
36 | }
37 |
38 | - (void)configureView
39 | {
40 | // Update the user interface for the detail item.
41 |
42 | if (self.detailItem) {
43 | self.detailDescriptionLabel.text = [self.detailItem description];
44 | }
45 | }
46 |
47 | - (void)viewDidLoad
48 | {
49 | [super viewDidLoad];
50 | // Do any additional setup after loading the view, typically from a nib.
51 | [self configureView];
52 | }
53 |
54 | - (void)didReceiveMemoryWarning
55 | {
56 | [super didReceiveMemoryWarning];
57 | // Dispose of any resources that can be recreated.
58 | }
59 |
60 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
61 | {
62 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
63 | if (self) {
64 | self.title = NSLocalizedString(@"Detail", @"Detail");
65 | }
66 | return self;
67 | }
68 |
69 | #pragma mark - Split view
70 |
71 | - (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
72 | {
73 | barButtonItem.title = NSLocalizedString(@"Master", @"Master");
74 | [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
75 | self.masterPopoverController = popoverController;
76 | }
77 |
78 | - (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
79 | {
80 | // Called when the view is shown again in the split view, invalidating the button and popover controller.
81 | [self.navigationItem setLeftBarButtonItem:nil animated:YES];
82 | self.masterPopoverController = nil;
83 | }
84 |
85 | @end
86 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFMasterViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFMasterViewController.h
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 3/29/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class MFDetailViewController;
12 |
13 | @interface MFMasterViewController : UITableViewController
14 |
15 | @property (strong, nonatomic) MFDetailViewController *detailViewController;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFMasterViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFMasterViewController.m
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 3/29/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import "MFMasterViewController.h"
10 |
11 | #import "MFDetailViewController.h"
12 |
13 | @interface MFMasterViewController () {
14 | NSMutableArray *_objects;
15 | }
16 | @end
17 |
18 | @implementation MFMasterViewController
19 |
20 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
21 | return YES;
22 | }
23 |
24 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
25 | {
26 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
27 | if (self) {
28 | self.title = NSLocalizedString(@"Master", @"Master");
29 | self.clearsSelectionOnViewWillAppear = NO;
30 | self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
31 | }
32 | return self;
33 | }
34 |
35 | - (void)viewDidLoad
36 | {
37 | [super viewDidLoad];
38 | // Do any additional setup after loading the view, typically from a nib.
39 | self.navigationItem.leftBarButtonItem = self.editButtonItem;
40 |
41 | UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
42 | self.navigationItem.rightBarButtonItem = addButton;
43 | }
44 |
45 | - (void)didReceiveMemoryWarning
46 | {
47 | [super didReceiveMemoryWarning];
48 | // Dispose of any resources that can be recreated.
49 | }
50 |
51 | - (void)insertNewObject:(id)sender
52 | {
53 | if (!_objects) {
54 | _objects = [[NSMutableArray alloc] init];
55 | }
56 | [_objects insertObject:[NSDate date] atIndex:0];
57 | NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
58 | [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
59 | }
60 |
61 | #pragma mark - Table View
62 |
63 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
64 | {
65 | return 1;
66 | }
67 |
68 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
69 | {
70 | return _objects.count;
71 | }
72 |
73 | // Customize the appearance of table view cells.
74 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
75 | {
76 | static NSString *CellIdentifier = @"Cell";
77 |
78 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
79 | if (cell == nil) {
80 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
81 | }
82 |
83 |
84 | NSDate *object = _objects[indexPath.row];
85 | cell.textLabel.text = [object description];
86 | return cell;
87 | }
88 |
89 | - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
90 | {
91 | // Return NO if you do not want the specified item to be editable.
92 | return YES;
93 | }
94 |
95 | - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
96 | {
97 | if (editingStyle == UITableViewCellEditingStyleDelete) {
98 | [_objects removeObjectAtIndex:indexPath.row];
99 | [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
100 | } else if (editingStyle == UITableViewCellEditingStyleInsert) {
101 | // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
102 | }
103 | }
104 |
105 | /*
106 | // Override to support rearranging the table view.
107 | - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
108 | {
109 | }
110 | */
111 |
112 | /*
113 | // Override to support conditional rearranging of the table view.
114 | - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
115 | {
116 | // Return NO if you do not want the item to be re-orderable.
117 | return YES;
118 | }
119 | */
120 |
121 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
122 | {
123 | NSDate *object = _objects[indexPath.row];
124 | self.detailViewController.detailItem = object;
125 | }
126 |
127 | @end
128 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.frederickdevelopment.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UIStatusBarTintParameters
32 |
33 | UINavigationBar
34 |
35 | Style
36 | UIBarStyleDefault
37 | Translucent
38 |
39 |
40 |
41 | UISupportedInterfaceOrientations
42 |
43 | UIInterfaceOrientationPortrait
44 | UIInterfaceOrientationLandscapeLeft
45 | UIInterfaceOrientationLandscapeRight
46 |
47 | UISupportedInterfaceOrientations~ipad
48 |
49 | UIInterfaceOrientationPortrait
50 | UIInterfaceOrientationPortraitUpsideDown
51 | UIInterfaceOrientationLandscapeLeft
52 | UIInterfaceOrientationLandscapeRight
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'MFSideMenuDemoSplitViewController' target in the 'MFSideMenuDemoSplitViewController' project
3 | //
4 |
5 | #import
6 |
7 | #ifndef __IPHONE_4_0
8 | #warning "This project uses features only available in iOS SDK 4.0 and later."
9 | #endif
10 |
11 | #ifdef __OBJC__
12 | #import
13 | #import
14 | #endif
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/SideMenuViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import
8 |
9 | @interface SideMenuViewController : UITableViewController
10 | @end
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/SideMenuViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import "SideMenuViewController.h"
8 | #import "MFSideMenu.h"
9 |
10 | @implementation SideMenuViewController
11 |
12 | #pragma mark -
13 | #pragma mark - UITableViewDataSource
14 |
15 | - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
16 | return [NSString stringWithFormat:@"Section %d", section];
17 | }
18 |
19 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
20 | return 2;
21 | }
22 |
23 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
24 | return 10;
25 | }
26 |
27 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
28 | static NSString *CellIdentifier = @"Cell";
29 |
30 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
31 | if (cell == nil) {
32 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
33 | }
34 |
35 | cell.textLabel.text = [NSString stringWithFormat:@"Item %d", indexPath.row];
36 |
37 | return cell;
38 | }
39 |
40 | #pragma mark -
41 | #pragma mark - UITableViewDelegate
42 |
43 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/en.lproj/MFDetailViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1552
5 | 12D78
6 | 3084
7 | 1187.37
8 | 626.00
9 |
10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
11 | 2083
12 |
13 |
14 | IBProxyObject
15 | IBUILabel
16 | IBUIView
17 |
18 |
19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
20 |
21 |
22 | PluginDependencyRecalculationVersion
23 |
24 |
25 |
26 |
27 | IBFilesOwner
28 | IBIPadFramework
29 |
30 |
31 | IBFirstResponder
32 | IBIPadFramework
33 |
34 |
35 |
36 | 274
37 |
38 |
39 |
40 | 298
41 | {{20, 493}, {728, 18}}
42 |
43 |
44 |
45 | 3
46 | MQA
47 |
48 | YES
49 | NO
50 | IBIPadFramework
51 | Detail view content goes here
52 |
53 | 1
54 | MCAwIDAAA
55 | darkTextColor
56 |
57 |
58 | 1
59 | 10
60 | 1
61 |
62 | 1
63 | 4
64 |
65 |
66 | Helvetica
67 | 14
68 | 16
69 |
70 |
71 |
72 | {{0, 20}, {768, 1004}}
73 |
74 |
75 |
76 | NO
77 |
78 | 2
79 |
80 | IBIPadFramework
81 |
82 |
83 |
84 |
85 |
86 |
87 | view
88 |
89 |
90 |
91 | 12
92 |
93 |
94 |
95 |
96 |
97 | 0
98 |
99 |
100 |
101 |
102 |
103 | -1
104 |
105 |
106 | File's Owner
107 |
108 |
109 | -2
110 |
111 |
112 |
113 |
114 | 8
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | 81
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 | MFDetailViewController
131 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
132 | UIResponder
133 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
134 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
135 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
136 |
137 |
138 |
139 |
140 |
141 | 98
142 |
143 |
144 |
145 |
146 | MFDetailViewController
147 | UIViewController
148 |
149 | detailDescriptionLabel
150 | UILabel
151 |
152 |
153 | detailDescriptionLabel
154 |
155 | detailDescriptionLabel
156 | UILabel
157 |
158 |
159 |
160 | IBProjectSource
161 | ./Classes/MFDetailViewController.h
162 |
163 |
164 |
165 |
166 | 0
167 | IBIPadFramework
168 | YES
169 | 3
170 | 2083
171 |
172 |
173 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/en.lproj/MFMasterViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1552
5 | 12D78
6 | 3084
7 | 1187.37
8 | 626.00
9 |
10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
11 | 2083
12 |
13 |
14 | IBProxyObject
15 | IBUITableView
16 |
17 |
18 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
19 |
20 |
21 | PluginDependencyRecalculationVersion
22 |
23 |
24 |
25 |
26 | IBFilesOwner
27 | IBIPadFramework
28 |
29 |
30 | IBFirstResponder
31 | IBIPadFramework
32 |
33 |
34 |
35 | 274
36 | {{0, 20}, {320, 832}}
37 |
38 |
39 |
40 | 3
41 | MQA
42 |
43 | YES
44 |
45 | 2
46 |
47 |
48 | IBUISplitViewMasterSimulatedSizeMetrics
49 |
50 | YES
51 |
52 |
53 |
54 |
55 |
56 | {320, 852}
57 | {320, 768}
58 |
59 |
60 | IBIPadFramework
61 | Master
62 | IBUISplitViewController
63 |
64 | IBUISplitViewControllerContentSizeLocation
65 | IBUISplitViewControllerContentSizeLocationMaster
66 |
67 |
68 | IBIPadFramework
69 | YES
70 | 1
71 | 0
72 | YES
73 | 44
74 | 22
75 | 22
76 |
77 |
78 |
79 |
80 |
81 |
82 | view
83 |
84 |
85 |
86 | 3
87 |
88 |
89 |
90 | dataSource
91 |
92 |
93 |
94 | 4
95 |
96 |
97 |
98 | delegate
99 |
100 |
101 |
102 | 5
103 |
104 |
105 |
106 |
107 |
108 | 0
109 |
110 |
111 |
112 |
113 |
114 | -1
115 |
116 |
117 | File's Owner
118 |
119 |
120 | -2
121 |
122 |
123 |
124 |
125 | 2
126 |
127 |
128 |
129 |
130 |
131 |
132 | MFMasterViewController
133 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
134 | UIResponder
135 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
136 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
137 |
138 |
139 |
140 |
141 |
142 | 5
143 |
144 |
145 | 0
146 | IBIPadFramework
147 | YES
148 | 3
149 | 2083
150 |
151 |
152 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoSplitViewController/MFSideMenuDemoSplitViewController/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 3/29/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "MFAppDelegate.h"
12 |
13 | int main(int argc, char *argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MFAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 273D106316F3E7FE00C187E0 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273D106216F3E7FE00C187E0 /* UIKit.framework */; };
11 | 273D106516F3E7FE00C187E0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273D106416F3E7FE00C187E0 /* Foundation.framework */; };
12 | 273D106716F3E7FE00C187E0 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273D106616F3E7FE00C187E0 /* CoreGraphics.framework */; };
13 | 273D106D16F3E7FE00C187E0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 273D106B16F3E7FE00C187E0 /* InfoPlist.strings */; };
14 | 273D106F16F3E7FE00C187E0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 273D106E16F3E7FE00C187E0 /* main.m */; };
15 | 273D107316F3E7FE00C187E0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 273D107216F3E7FE00C187E0 /* AppDelegate.m */; };
16 | 273D107C16F3E7FE00C187E0 /* MainStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 273D107A16F3E7FE00C187E0 /* MainStoryboard.storyboard */; };
17 | 274419D917BBAFA90007ADE7 /* MFSideMenuShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 274419D817BBAFA90007ADE7 /* MFSideMenuShadow.m */; };
18 | 2769860617355CE900536685 /* MFSideMenuContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2769860517355CE900536685 /* MFSideMenuContainerViewController.m */; };
19 | 27698611173911BE00536685 /* SideMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27698610173911BE00536685 /* SideMenuViewController.m */; };
20 | 2769861A1739176A00536685 /* back-arrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 276986131739176A00536685 /* back-arrow.png */; };
21 | 2769861B1739176A00536685 /* back-arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 276986141739176A00536685 /* back-arrow@2x.png */; };
22 | 2769861C1739176A00536685 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 276986151739176A00536685 /* Default-568h@2x.png */; };
23 | 2769861D1739176A00536685 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 276986161739176A00536685 /* Default.png */; };
24 | 2769861E1739176A00536685 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 276986171739176A00536685 /* Default@2x.png */; };
25 | 2769861F1739176A00536685 /* menu-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 276986181739176A00536685 /* menu-icon.png */; };
26 | 276986201739176A00536685 /* menu-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 276986191739176A00536685 /* menu-icon@2x.png */; };
27 | 279CE767171433C00056366A /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 279CE766171433C00056366A /* DemoViewController.m */; };
28 | D081F054178E6B7E004A89D0 /* UIViewController+MFSideMenuAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D081F053178E6B7E004A89D0 /* UIViewController+MFSideMenuAdditions.m */; };
29 | /* End PBXBuildFile section */
30 |
31 | /* Begin PBXFileReference section */
32 | 273D105F16F3E7FE00C187E0 /* MFSideMenuDemoStoryboard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MFSideMenuDemoStoryboard.app; sourceTree = BUILT_PRODUCTS_DIR; };
33 | 273D106216F3E7FE00C187E0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
34 | 273D106416F3E7FE00C187E0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
35 | 273D106616F3E7FE00C187E0 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
36 | 273D106A16F3E7FE00C187E0 /* MFSideMenuDemoStoryboard-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MFSideMenuDemoStoryboard-Info.plist"; sourceTree = ""; };
37 | 273D106C16F3E7FE00C187E0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
38 | 273D106E16F3E7FE00C187E0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
39 | 273D107016F3E7FE00C187E0 /* MFSideMenuDemoStoryboard-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MFSideMenuDemoStoryboard-Prefix.pch"; sourceTree = ""; };
40 | 273D107116F3E7FE00C187E0 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
41 | 273D107216F3E7FE00C187E0 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
42 | 273D107B16F3E7FE00C187E0 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard.storyboard; sourceTree = ""; };
43 | 274419D717BBAFA90007ADE7 /* MFSideMenuShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenuShadow.h; sourceTree = ""; };
44 | 274419D817BBAFA90007ADE7 /* MFSideMenuShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFSideMenuShadow.m; sourceTree = ""; };
45 | 2769860417355CE900536685 /* MFSideMenuContainerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenuContainerViewController.h; sourceTree = ""; };
46 | 2769860517355CE900536685 /* MFSideMenuContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFSideMenuContainerViewController.m; sourceTree = ""; };
47 | 2769860E1737D78600536685 /* MFSideMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenu.h; sourceTree = ""; };
48 | 2769860F173911BE00536685 /* SideMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SideMenuViewController.h; sourceTree = ""; };
49 | 27698610173911BE00536685 /* SideMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SideMenuViewController.m; sourceTree = ""; };
50 | 276986131739176A00536685 /* back-arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-arrow.png"; sourceTree = ""; };
51 | 276986141739176A00536685 /* back-arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-arrow@2x.png"; sourceTree = ""; };
52 | 276986151739176A00536685 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; };
53 | 276986161739176A00536685 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; };
54 | 276986171739176A00536685 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; };
55 | 276986181739176A00536685 /* menu-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-icon.png"; sourceTree = ""; };
56 | 276986191739176A00536685 /* menu-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-icon@2x.png"; sourceTree = ""; };
57 | 279CE765171433C00056366A /* DemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoViewController.h; sourceTree = ""; };
58 | 279CE766171433C00056366A /* DemoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoViewController.m; sourceTree = ""; };
59 | D081F052178E6B7E004A89D0 /* UIViewController+MFSideMenuAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+MFSideMenuAdditions.h"; sourceTree = ""; };
60 | D081F053178E6B7E004A89D0 /* UIViewController+MFSideMenuAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+MFSideMenuAdditions.m"; sourceTree = ""; };
61 | /* End PBXFileReference section */
62 |
63 | /* Begin PBXFrameworksBuildPhase section */
64 | 273D105C16F3E7FE00C187E0 /* Frameworks */ = {
65 | isa = PBXFrameworksBuildPhase;
66 | buildActionMask = 2147483647;
67 | files = (
68 | 273D106316F3E7FE00C187E0 /* UIKit.framework in Frameworks */,
69 | 273D106516F3E7FE00C187E0 /* Foundation.framework in Frameworks */,
70 | 273D106716F3E7FE00C187E0 /* CoreGraphics.framework in Frameworks */,
71 | );
72 | runOnlyForDeploymentPostprocessing = 0;
73 | };
74 | /* End PBXFrameworksBuildPhase section */
75 |
76 | /* Begin PBXGroup section */
77 | 273D105616F3E7FE00C187E0 = {
78 | isa = PBXGroup;
79 | children = (
80 | 273D112216F6331D00C187E0 /* MFSideMenu */,
81 | 273D106816F3E7FE00C187E0 /* MFSideMenuDemoStoryboard */,
82 | 273D106116F3E7FE00C187E0 /* Frameworks */,
83 | 273D106016F3E7FE00C187E0 /* Products */,
84 | );
85 | sourceTree = "";
86 | };
87 | 273D106016F3E7FE00C187E0 /* Products */ = {
88 | isa = PBXGroup;
89 | children = (
90 | 273D105F16F3E7FE00C187E0 /* MFSideMenuDemoStoryboard.app */,
91 | );
92 | name = Products;
93 | sourceTree = "";
94 | };
95 | 273D106116F3E7FE00C187E0 /* Frameworks */ = {
96 | isa = PBXGroup;
97 | children = (
98 | 273D106216F3E7FE00C187E0 /* UIKit.framework */,
99 | 273D106416F3E7FE00C187E0 /* Foundation.framework */,
100 | 273D106616F3E7FE00C187E0 /* CoreGraphics.framework */,
101 | );
102 | name = Frameworks;
103 | sourceTree = "";
104 | };
105 | 273D106816F3E7FE00C187E0 /* MFSideMenuDemoStoryboard */ = {
106 | isa = PBXGroup;
107 | children = (
108 | 276986121739176A00536685 /* Images */,
109 | 273D107116F3E7FE00C187E0 /* AppDelegate.h */,
110 | 273D107216F3E7FE00C187E0 /* AppDelegate.m */,
111 | 273D107A16F3E7FE00C187E0 /* MainStoryboard.storyboard */,
112 | 273D106916F3E7FE00C187E0 /* Supporting Files */,
113 | 279CE765171433C00056366A /* DemoViewController.h */,
114 | 279CE766171433C00056366A /* DemoViewController.m */,
115 | 2769860F173911BE00536685 /* SideMenuViewController.h */,
116 | 27698610173911BE00536685 /* SideMenuViewController.m */,
117 | );
118 | path = MFSideMenuDemoStoryboard;
119 | sourceTree = "";
120 | };
121 | 273D106916F3E7FE00C187E0 /* Supporting Files */ = {
122 | isa = PBXGroup;
123 | children = (
124 | 273D106A16F3E7FE00C187E0 /* MFSideMenuDemoStoryboard-Info.plist */,
125 | 273D106B16F3E7FE00C187E0 /* InfoPlist.strings */,
126 | 273D106E16F3E7FE00C187E0 /* main.m */,
127 | 273D107016F3E7FE00C187E0 /* MFSideMenuDemoStoryboard-Prefix.pch */,
128 | );
129 | name = "Supporting Files";
130 | sourceTree = "";
131 | };
132 | 273D112216F6331D00C187E0 /* MFSideMenu */ = {
133 | isa = PBXGroup;
134 | children = (
135 | 2769860E1737D78600536685 /* MFSideMenu.h */,
136 | 2769860417355CE900536685 /* MFSideMenuContainerViewController.h */,
137 | 2769860517355CE900536685 /* MFSideMenuContainerViewController.m */,
138 | D081F052178E6B7E004A89D0 /* UIViewController+MFSideMenuAdditions.h */,
139 | D081F053178E6B7E004A89D0 /* UIViewController+MFSideMenuAdditions.m */,
140 | 274419D717BBAFA90007ADE7 /* MFSideMenuShadow.h */,
141 | 274419D817BBAFA90007ADE7 /* MFSideMenuShadow.m */,
142 | );
143 | name = MFSideMenu;
144 | path = ../../MFSideMenu;
145 | sourceTree = "";
146 | };
147 | 276986121739176A00536685 /* Images */ = {
148 | isa = PBXGroup;
149 | children = (
150 | 276986131739176A00536685 /* back-arrow.png */,
151 | 276986141739176A00536685 /* back-arrow@2x.png */,
152 | 276986151739176A00536685 /* Default-568h@2x.png */,
153 | 276986161739176A00536685 /* Default.png */,
154 | 276986171739176A00536685 /* Default@2x.png */,
155 | 276986181739176A00536685 /* menu-icon.png */,
156 | 276986191739176A00536685 /* menu-icon@2x.png */,
157 | );
158 | path = Images;
159 | sourceTree = "";
160 | };
161 | /* End PBXGroup section */
162 |
163 | /* Begin PBXNativeTarget section */
164 | 273D105E16F3E7FE00C187E0 /* MFSideMenuDemoStoryboard */ = {
165 | isa = PBXNativeTarget;
166 | buildConfigurationList = 273D108216F3E7FE00C187E0 /* Build configuration list for PBXNativeTarget "MFSideMenuDemoStoryboard" */;
167 | buildPhases = (
168 | 273D105B16F3E7FE00C187E0 /* Sources */,
169 | 273D105C16F3E7FE00C187E0 /* Frameworks */,
170 | 273D105D16F3E7FE00C187E0 /* Resources */,
171 | );
172 | buildRules = (
173 | );
174 | dependencies = (
175 | );
176 | name = MFSideMenuDemoStoryboard;
177 | productName = MFSideMenuDemoStoryboard;
178 | productReference = 273D105F16F3E7FE00C187E0 /* MFSideMenuDemoStoryboard.app */;
179 | productType = "com.apple.product-type.application";
180 | };
181 | /* End PBXNativeTarget section */
182 |
183 | /* Begin PBXProject section */
184 | 273D105716F3E7FE00C187E0 /* Project object */ = {
185 | isa = PBXProject;
186 | attributes = {
187 | LastUpgradeCheck = 0460;
188 | ORGANIZATIONNAME = "Michael Frederick";
189 | };
190 | buildConfigurationList = 273D105A16F3E7FE00C187E0 /* Build configuration list for PBXProject "MFSideMenuDemoStoryboard" */;
191 | compatibilityVersion = "Xcode 3.2";
192 | developmentRegion = English;
193 | hasScannedForEncodings = 0;
194 | knownRegions = (
195 | en,
196 | );
197 | mainGroup = 273D105616F3E7FE00C187E0;
198 | productRefGroup = 273D106016F3E7FE00C187E0 /* Products */;
199 | projectDirPath = "";
200 | projectRoot = "";
201 | targets = (
202 | 273D105E16F3E7FE00C187E0 /* MFSideMenuDemoStoryboard */,
203 | );
204 | };
205 | /* End PBXProject section */
206 |
207 | /* Begin PBXResourcesBuildPhase section */
208 | 273D105D16F3E7FE00C187E0 /* Resources */ = {
209 | isa = PBXResourcesBuildPhase;
210 | buildActionMask = 2147483647;
211 | files = (
212 | 273D106D16F3E7FE00C187E0 /* InfoPlist.strings in Resources */,
213 | 273D107C16F3E7FE00C187E0 /* MainStoryboard.storyboard in Resources */,
214 | 2769861A1739176A00536685 /* back-arrow.png in Resources */,
215 | 2769861B1739176A00536685 /* back-arrow@2x.png in Resources */,
216 | 2769861C1739176A00536685 /* Default-568h@2x.png in Resources */,
217 | 2769861D1739176A00536685 /* Default.png in Resources */,
218 | 2769861E1739176A00536685 /* Default@2x.png in Resources */,
219 | 2769861F1739176A00536685 /* menu-icon.png in Resources */,
220 | 276986201739176A00536685 /* menu-icon@2x.png in Resources */,
221 | );
222 | runOnlyForDeploymentPostprocessing = 0;
223 | };
224 | /* End PBXResourcesBuildPhase section */
225 |
226 | /* Begin PBXSourcesBuildPhase section */
227 | 273D105B16F3E7FE00C187E0 /* Sources */ = {
228 | isa = PBXSourcesBuildPhase;
229 | buildActionMask = 2147483647;
230 | files = (
231 | 273D106F16F3E7FE00C187E0 /* main.m in Sources */,
232 | 273D107316F3E7FE00C187E0 /* AppDelegate.m in Sources */,
233 | 274419D917BBAFA90007ADE7 /* MFSideMenuShadow.m in Sources */,
234 | 279CE767171433C00056366A /* DemoViewController.m in Sources */,
235 | 2769860617355CE900536685 /* MFSideMenuContainerViewController.m in Sources */,
236 | 27698611173911BE00536685 /* SideMenuViewController.m in Sources */,
237 | D081F054178E6B7E004A89D0 /* UIViewController+MFSideMenuAdditions.m in Sources */,
238 | );
239 | runOnlyForDeploymentPostprocessing = 0;
240 | };
241 | /* End PBXSourcesBuildPhase section */
242 |
243 | /* Begin PBXVariantGroup section */
244 | 273D106B16F3E7FE00C187E0 /* InfoPlist.strings */ = {
245 | isa = PBXVariantGroup;
246 | children = (
247 | 273D106C16F3E7FE00C187E0 /* en */,
248 | );
249 | name = InfoPlist.strings;
250 | sourceTree = "";
251 | };
252 | 273D107A16F3E7FE00C187E0 /* MainStoryboard.storyboard */ = {
253 | isa = PBXVariantGroup;
254 | children = (
255 | 273D107B16F3E7FE00C187E0 /* en */,
256 | );
257 | name = MainStoryboard.storyboard;
258 | sourceTree = "";
259 | };
260 | /* End PBXVariantGroup section */
261 |
262 | /* Begin XCBuildConfiguration section */
263 | 273D108016F3E7FE00C187E0 /* Debug */ = {
264 | isa = XCBuildConfiguration;
265 | buildSettings = {
266 | ALWAYS_SEARCH_USER_PATHS = NO;
267 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
268 | CLANG_CXX_LIBRARY = "libc++";
269 | CLANG_ENABLE_OBJC_ARC = YES;
270 | CLANG_WARN_CONSTANT_CONVERSION = YES;
271 | CLANG_WARN_EMPTY_BODY = YES;
272 | CLANG_WARN_ENUM_CONVERSION = YES;
273 | CLANG_WARN_INT_CONVERSION = YES;
274 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
275 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
276 | COPY_PHASE_STRIP = NO;
277 | GCC_C_LANGUAGE_STANDARD = gnu99;
278 | GCC_DYNAMIC_NO_PIC = NO;
279 | GCC_OPTIMIZATION_LEVEL = 0;
280 | GCC_PREPROCESSOR_DEFINITIONS = (
281 | "DEBUG=1",
282 | "$(inherited)",
283 | );
284 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
285 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
286 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
287 | GCC_WARN_UNUSED_VARIABLE = YES;
288 | HEADER_SEARCH_PATHS = "${SRCROOT}/../MFSideMenu/**";
289 | IPHONEOS_DEPLOYMENT_TARGET = 6.1;
290 | ONLY_ACTIVE_ARCH = YES;
291 | SDKROOT = iphoneos;
292 | };
293 | name = Debug;
294 | };
295 | 273D108116F3E7FE00C187E0 /* Release */ = {
296 | isa = XCBuildConfiguration;
297 | buildSettings = {
298 | ALWAYS_SEARCH_USER_PATHS = NO;
299 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
300 | CLANG_CXX_LIBRARY = "libc++";
301 | CLANG_ENABLE_OBJC_ARC = YES;
302 | CLANG_WARN_CONSTANT_CONVERSION = YES;
303 | CLANG_WARN_EMPTY_BODY = YES;
304 | CLANG_WARN_ENUM_CONVERSION = YES;
305 | CLANG_WARN_INT_CONVERSION = YES;
306 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
307 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
308 | COPY_PHASE_STRIP = YES;
309 | GCC_C_LANGUAGE_STANDARD = gnu99;
310 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
311 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
312 | GCC_WARN_UNUSED_VARIABLE = YES;
313 | HEADER_SEARCH_PATHS = "${SRCROOT}/../MFSideMenu/**";
314 | IPHONEOS_DEPLOYMENT_TARGET = 6.1;
315 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
316 | SDKROOT = iphoneos;
317 | VALIDATE_PRODUCT = YES;
318 | };
319 | name = Release;
320 | };
321 | 273D108316F3E7FE00C187E0 /* Debug */ = {
322 | isa = XCBuildConfiguration;
323 | buildSettings = {
324 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
325 | GCC_PREFIX_HEADER = "MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard-Prefix.pch";
326 | HEADER_SEARCH_PATHS = "";
327 | INFOPLIST_FILE = "MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard-Info.plist";
328 | PRODUCT_NAME = "$(TARGET_NAME)";
329 | USER_HEADER_SEARCH_PATHS = "";
330 | WRAPPER_EXTENSION = app;
331 | };
332 | name = Debug;
333 | };
334 | 273D108416F3E7FE00C187E0 /* Release */ = {
335 | isa = XCBuildConfiguration;
336 | buildSettings = {
337 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
338 | GCC_PREFIX_HEADER = "MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard-Prefix.pch";
339 | HEADER_SEARCH_PATHS = "";
340 | INFOPLIST_FILE = "MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard-Info.plist";
341 | PRODUCT_NAME = "$(TARGET_NAME)";
342 | USER_HEADER_SEARCH_PATHS = "";
343 | WRAPPER_EXTENSION = app;
344 | };
345 | name = Release;
346 | };
347 | /* End XCBuildConfiguration section */
348 |
349 | /* Begin XCConfigurationList section */
350 | 273D105A16F3E7FE00C187E0 /* Build configuration list for PBXProject "MFSideMenuDemoStoryboard" */ = {
351 | isa = XCConfigurationList;
352 | buildConfigurations = (
353 | 273D108016F3E7FE00C187E0 /* Debug */,
354 | 273D108116F3E7FE00C187E0 /* Release */,
355 | );
356 | defaultConfigurationIsVisible = 0;
357 | defaultConfigurationName = Release;
358 | };
359 | 273D108216F3E7FE00C187E0 /* Build configuration list for PBXNativeTarget "MFSideMenuDemoStoryboard" */ = {
360 | isa = XCConfigurationList;
361 | buildConfigurations = (
362 | 273D108316F3E7FE00C187E0 /* Debug */,
363 | 273D108416F3E7FE00C187E0 /* Release */,
364 | );
365 | defaultConfigurationIsVisible = 0;
366 | defaultConfigurationName = Release;
367 | };
368 | /* End XCConfigurationList section */
369 | };
370 | rootObject = 273D105716F3E7FE00C187E0 /* Project object */;
371 | }
372 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // MFSideMenuDemoStoryboard
4 | //
5 | // Created by Michael Frederick on 3/15/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // MFSideMenuDemoStoryboard
4 | //
5 | // Created by Michael Frederick on 3/15/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import "MFSideMenuContainerViewController.h"
11 |
12 | @implementation AppDelegate
13 |
14 | @synthesize window;
15 |
16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
17 | {
18 | UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
19 | MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.window.rootViewController;
20 | UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"navigationController"];
21 | UIViewController *leftSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"leftSideMenuViewController"];
22 | UIViewController *rightSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"rightSideMenuViewController"];
23 |
24 | [container setLeftMenuViewController:leftSideMenuViewController];
25 | [container setRightMenuViewController:rightSideMenuViewController];
26 | [container setCenterViewController:navigationController];
27 |
28 | return YES;
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/DemoViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.h
3 | // MFSideMenuDemoStoryboard
4 | //
5 | // Created by Michael Frederick on 4/9/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DemoViewController : UIViewController
12 |
13 | - (IBAction)showLeftMenuPressed:(id)sender;
14 | - (IBAction)showRightMenuPressed:(id)sender;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/DemoViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.m
3 | // MFSideMenuDemoStoryboard
4 | //
5 | // Created by Michael Frederick on 4/9/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import "DemoViewController.h"
10 | #import "MFSideMenu.h"
11 |
12 | @interface DemoViewController ()
13 |
14 | @end
15 |
16 | @implementation DemoViewController
17 |
18 | - (void)viewDidLoad
19 | {
20 | [super viewDidLoad];
21 | }
22 |
23 | - (IBAction)showLeftMenuPressed:(id)sender {
24 | [self.menuContainerViewController toggleLeftSideMenuCompletion:nil];
25 | }
26 |
27 | - (IBAction)showRightMenuPressed:(id)sender {
28 | [self.menuContainerViewController toggleRightSideMenuCompletion:nil];
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/Default-568h@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/Default.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/Default@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/back-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/back-arrow.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/back-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/back-arrow@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/menu-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/menu-icon.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/menu-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/Images/menu-icon@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | frederickdevelopment.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIMainStoryboardFile
28 | MainStoryboard
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'MFSideMenuDemoStoryboard' target in the 'MFSideMenuDemoStoryboard' project
3 | //
4 |
5 | #import
6 |
7 | #ifndef __IPHONE_5_0
8 | #warning "This project uses features only available in iOS SDK 5.0 and later."
9 | #endif
10 |
11 | #ifdef __OBJC__
12 | #import
13 | #import
14 | #endif
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/SideMenuViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.h
3 | // MFSideMenuDemoStoryboard
4 | //
5 | // Created by Michael Frederick on 5/7/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SideMenuViewController : UITableViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/SideMenuViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import "SideMenuViewController.h"
8 | #import "MFSideMenu.h"
9 | #import "DemoViewController.h"
10 |
11 | @implementation SideMenuViewController
12 |
13 | #pragma mark -
14 | #pragma mark - UITableViewDataSource
15 |
16 | - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
17 | return [NSString stringWithFormat:@"Section %d", section];
18 | }
19 |
20 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
21 | return 2;
22 | }
23 |
24 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
25 | return 10;
26 | }
27 |
28 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
29 | static NSString *CellIdentifier = @"Cell";
30 |
31 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
32 | if (cell == nil) {
33 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
34 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
35 | }
36 |
37 | cell.textLabel.text = [NSString stringWithFormat:@"Item %d", indexPath.row];
38 |
39 | return cell;
40 | }
41 |
42 | #pragma mark -
43 | #pragma mark - UITableViewDelegate
44 |
45 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
46 | DemoViewController *demoViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DemoViewController"];
47 | demoViewController.title = [NSString stringWithFormat:@"Demo #%d-%d", indexPath.section, indexPath.row];
48 |
49 | UINavigationController *navigationController = self.menuContainerViewController.centerViewController;
50 | NSArray *controllers = [NSArray arrayWithObject:demoViewController];
51 | navigationController.viewControllers = controllers;
52 | [self.menuContainerViewController setMenuState:MFSideMenuStateClosed];
53 | }
54 |
55 | @end
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/en.lproj/MainStoryboard.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MFSideMenuDemoStoryboard
4 | //
5 | // Created by Michael Frederick on 3/15/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "AppDelegate.h"
12 |
13 | int main(int argc, char *argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 273D113C16F8841300C187E0 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273D113B16F8841300C187E0 /* UIKit.framework */; };
11 | 273D113E16F8841300C187E0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273D113D16F8841300C187E0 /* Foundation.framework */; };
12 | 273D114016F8841300C187E0 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273D113F16F8841300C187E0 /* CoreGraphics.framework */; };
13 | 273D114616F8841300C187E0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 273D114416F8841300C187E0 /* InfoPlist.strings */; };
14 | 273D114816F8841300C187E0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 273D114716F8841300C187E0 /* main.m */; };
15 | 273D114C16F8841300C187E0 /* MFAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 273D114B16F8841300C187E0 /* MFAppDelegate.m */; };
16 | 273D116A16F884F900C187E0 /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273D116616F884F900C187E0 /* DemoViewController.m */; };
17 | 273D116B16F884F900C187E0 /* DemoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273D116716F884F900C187E0 /* DemoViewController.xib */; };
18 | 273D116C16F884F900C187E0 /* SideMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 273D116916F884F900C187E0 /* SideMenuViewController.m */; };
19 | 273D117316F8859B00C187E0 /* back-arrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 273D116E16F8859B00C187E0 /* back-arrow.png */; };
20 | 273D117416F8859B00C187E0 /* back-arrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 273D116F16F8859B00C187E0 /* back-arrow@2x.png */; };
21 | 273D117516F8859B00C187E0 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 273D117016F8859B00C187E0 /* Default-568h@2x.png */; };
22 | 273D117616F8859B00C187E0 /* menu-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 273D117116F8859B00C187E0 /* menu-icon.png */; };
23 | 273D117716F8859B00C187E0 /* menu-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 273D117216F8859B00C187E0 /* menu-icon@2x.png */; };
24 | 274419D617BBAF990007ADE7 /* MFSideMenuShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 274419D517BBAF990007ADE7 /* MFSideMenuShadow.m */; };
25 | 276985BC1733D69200536685 /* MFSideMenuContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 276985BB1733D69200536685 /* MFSideMenuContainerViewController.m */; };
26 | D081F051178E6AD3004A89D0 /* UIViewController+MFSideMenuAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D081F050178E6AD3004A89D0 /* UIViewController+MFSideMenuAdditions.m */; };
27 | /* End PBXBuildFile section */
28 |
29 | /* Begin PBXFileReference section */
30 | 273D113816F8841300C187E0 /* MFSideMenuDemoUITabBarController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MFSideMenuDemoUITabBarController.app; sourceTree = BUILT_PRODUCTS_DIR; };
31 | 273D113B16F8841300C187E0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
32 | 273D113D16F8841300C187E0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
33 | 273D113F16F8841300C187E0 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
34 | 273D114316F8841300C187E0 /* MFSideMenuDemoUITabBarController-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MFSideMenuDemoUITabBarController-Info.plist"; sourceTree = ""; };
35 | 273D114516F8841300C187E0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
36 | 273D114716F8841300C187E0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
37 | 273D114916F8841300C187E0 /* MFSideMenuDemoUITabBarController-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MFSideMenuDemoUITabBarController-Prefix.pch"; sourceTree = ""; };
38 | 273D114A16F8841300C187E0 /* MFAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFAppDelegate.h; sourceTree = ""; };
39 | 273D114B16F8841300C187E0 /* MFAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MFAppDelegate.m; sourceTree = ""; };
40 | 273D116516F884F900C187E0 /* DemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoViewController.h; sourceTree = ""; };
41 | 273D116616F884F900C187E0 /* DemoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoViewController.m; sourceTree = ""; };
42 | 273D116716F884F900C187E0 /* DemoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DemoViewController.xib; sourceTree = ""; };
43 | 273D116816F884F900C187E0 /* SideMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SideMenuViewController.h; sourceTree = ""; };
44 | 273D116916F884F900C187E0 /* SideMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SideMenuViewController.m; sourceTree = ""; };
45 | 273D116E16F8859B00C187E0 /* back-arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-arrow.png"; sourceTree = ""; };
46 | 273D116F16F8859B00C187E0 /* back-arrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-arrow@2x.png"; sourceTree = ""; };
47 | 273D117016F8859B00C187E0 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; };
48 | 273D117116F8859B00C187E0 /* menu-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-icon.png"; sourceTree = ""; };
49 | 273D117216F8859B00C187E0 /* menu-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-icon@2x.png"; sourceTree = ""; };
50 | 274419D417BBAF990007ADE7 /* MFSideMenuShadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenuShadow.h; sourceTree = ""; };
51 | 274419D517BBAF990007ADE7 /* MFSideMenuShadow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFSideMenuShadow.m; sourceTree = ""; };
52 | 276985BA1733D69200536685 /* MFSideMenuContainerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenuContainerViewController.h; sourceTree = ""; };
53 | 276985BB1733D69200536685 /* MFSideMenuContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFSideMenuContainerViewController.m; sourceTree = ""; };
54 | D081F04E178E6AD3004A89D0 /* MFSideMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFSideMenu.h; sourceTree = ""; };
55 | D081F04F178E6AD3004A89D0 /* UIViewController+MFSideMenuAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+MFSideMenuAdditions.h"; sourceTree = ""; };
56 | D081F050178E6AD3004A89D0 /* UIViewController+MFSideMenuAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+MFSideMenuAdditions.m"; sourceTree = ""; };
57 | /* End PBXFileReference section */
58 |
59 | /* Begin PBXFrameworksBuildPhase section */
60 | 273D113516F8841300C187E0 /* Frameworks */ = {
61 | isa = PBXFrameworksBuildPhase;
62 | buildActionMask = 2147483647;
63 | files = (
64 | 273D113C16F8841300C187E0 /* UIKit.framework in Frameworks */,
65 | 273D113E16F8841300C187E0 /* Foundation.framework in Frameworks */,
66 | 273D114016F8841300C187E0 /* CoreGraphics.framework in Frameworks */,
67 | );
68 | runOnlyForDeploymentPostprocessing = 0;
69 | };
70 | /* End PBXFrameworksBuildPhase section */
71 |
72 | /* Begin PBXGroup section */
73 | 273D112F16F8841300C187E0 = {
74 | isa = PBXGroup;
75 | children = (
76 | 273D115816F8843600C187E0 /* MFSideMenu */,
77 | 273D114116F8841300C187E0 /* MFSideMenuDemoUITabBarController */,
78 | 273D113A16F8841300C187E0 /* Frameworks */,
79 | 273D113916F8841300C187E0 /* Products */,
80 | );
81 | sourceTree = "";
82 | };
83 | 273D113916F8841300C187E0 /* Products */ = {
84 | isa = PBXGroup;
85 | children = (
86 | 273D113816F8841300C187E0 /* MFSideMenuDemoUITabBarController.app */,
87 | );
88 | name = Products;
89 | sourceTree = "";
90 | };
91 | 273D113A16F8841300C187E0 /* Frameworks */ = {
92 | isa = PBXGroup;
93 | children = (
94 | 273D113B16F8841300C187E0 /* UIKit.framework */,
95 | 273D113D16F8841300C187E0 /* Foundation.framework */,
96 | 273D113F16F8841300C187E0 /* CoreGraphics.framework */,
97 | );
98 | name = Frameworks;
99 | sourceTree = "";
100 | };
101 | 273D114116F8841300C187E0 /* MFSideMenuDemoUITabBarController */ = {
102 | isa = PBXGroup;
103 | children = (
104 | 273D114A16F8841300C187E0 /* MFAppDelegate.h */,
105 | 273D114B16F8841300C187E0 /* MFAppDelegate.m */,
106 | 273D116516F884F900C187E0 /* DemoViewController.h */,
107 | 273D116616F884F900C187E0 /* DemoViewController.m */,
108 | 273D116716F884F900C187E0 /* DemoViewController.xib */,
109 | 273D116816F884F900C187E0 /* SideMenuViewController.h */,
110 | 273D116916F884F900C187E0 /* SideMenuViewController.m */,
111 | 273D116D16F8859B00C187E0 /* Images */,
112 | 273D114216F8841300C187E0 /* Supporting Files */,
113 | );
114 | path = MFSideMenuDemoUITabBarController;
115 | sourceTree = "";
116 | };
117 | 273D114216F8841300C187E0 /* Supporting Files */ = {
118 | isa = PBXGroup;
119 | children = (
120 | 273D114316F8841300C187E0 /* MFSideMenuDemoUITabBarController-Info.plist */,
121 | 273D114416F8841300C187E0 /* InfoPlist.strings */,
122 | 273D114716F8841300C187E0 /* main.m */,
123 | 273D114916F8841300C187E0 /* MFSideMenuDemoUITabBarController-Prefix.pch */,
124 | );
125 | name = "Supporting Files";
126 | sourceTree = "";
127 | };
128 | 273D115816F8843600C187E0 /* MFSideMenu */ = {
129 | isa = PBXGroup;
130 | children = (
131 | D081F04E178E6AD3004A89D0 /* MFSideMenu.h */,
132 | D081F04F178E6AD3004A89D0 /* UIViewController+MFSideMenuAdditions.h */,
133 | D081F050178E6AD3004A89D0 /* UIViewController+MFSideMenuAdditions.m */,
134 | 276985BA1733D69200536685 /* MFSideMenuContainerViewController.h */,
135 | 276985BB1733D69200536685 /* MFSideMenuContainerViewController.m */,
136 | 274419D417BBAF990007ADE7 /* MFSideMenuShadow.h */,
137 | 274419D517BBAF990007ADE7 /* MFSideMenuShadow.m */,
138 | );
139 | name = MFSideMenu;
140 | path = ../../MFSideMenu;
141 | sourceTree = "";
142 | };
143 | 273D116D16F8859B00C187E0 /* Images */ = {
144 | isa = PBXGroup;
145 | children = (
146 | 273D116E16F8859B00C187E0 /* back-arrow.png */,
147 | 273D116F16F8859B00C187E0 /* back-arrow@2x.png */,
148 | 273D117016F8859B00C187E0 /* Default-568h@2x.png */,
149 | 273D117116F8859B00C187E0 /* menu-icon.png */,
150 | 273D117216F8859B00C187E0 /* menu-icon@2x.png */,
151 | );
152 | path = Images;
153 | sourceTree = "";
154 | };
155 | /* End PBXGroup section */
156 |
157 | /* Begin PBXNativeTarget section */
158 | 273D113716F8841300C187E0 /* MFSideMenuDemoUITabBarController */ = {
159 | isa = PBXNativeTarget;
160 | buildConfigurationList = 273D115516F8841300C187E0 /* Build configuration list for PBXNativeTarget "MFSideMenuDemoUITabBarController" */;
161 | buildPhases = (
162 | 273D113416F8841300C187E0 /* Sources */,
163 | 273D113516F8841300C187E0 /* Frameworks */,
164 | 273D113616F8841300C187E0 /* Resources */,
165 | );
166 | buildRules = (
167 | );
168 | dependencies = (
169 | );
170 | name = MFSideMenuDemoUITabBarController;
171 | productName = MFSideMenuDemoUITabBarController;
172 | productReference = 273D113816F8841300C187E0 /* MFSideMenuDemoUITabBarController.app */;
173 | productType = "com.apple.product-type.application";
174 | };
175 | /* End PBXNativeTarget section */
176 |
177 | /* Begin PBXProject section */
178 | 273D113016F8841300C187E0 /* Project object */ = {
179 | isa = PBXProject;
180 | attributes = {
181 | CLASSPREFIX = MF;
182 | LastUpgradeCheck = 0460;
183 | ORGANIZATIONNAME = "Michael Frederick";
184 | };
185 | buildConfigurationList = 273D113316F8841300C187E0 /* Build configuration list for PBXProject "MFSideMenuDemoUITabBarController" */;
186 | compatibilityVersion = "Xcode 3.2";
187 | developmentRegion = English;
188 | hasScannedForEncodings = 0;
189 | knownRegions = (
190 | en,
191 | );
192 | mainGroup = 273D112F16F8841300C187E0;
193 | productRefGroup = 273D113916F8841300C187E0 /* Products */;
194 | projectDirPath = "";
195 | projectRoot = "";
196 | targets = (
197 | 273D113716F8841300C187E0 /* MFSideMenuDemoUITabBarController */,
198 | );
199 | };
200 | /* End PBXProject section */
201 |
202 | /* Begin PBXResourcesBuildPhase section */
203 | 273D113616F8841300C187E0 /* Resources */ = {
204 | isa = PBXResourcesBuildPhase;
205 | buildActionMask = 2147483647;
206 | files = (
207 | 273D114616F8841300C187E0 /* InfoPlist.strings in Resources */,
208 | 273D116B16F884F900C187E0 /* DemoViewController.xib in Resources */,
209 | 273D117316F8859B00C187E0 /* back-arrow.png in Resources */,
210 | 273D117416F8859B00C187E0 /* back-arrow@2x.png in Resources */,
211 | 273D117516F8859B00C187E0 /* Default-568h@2x.png in Resources */,
212 | 273D117616F8859B00C187E0 /* menu-icon.png in Resources */,
213 | 273D117716F8859B00C187E0 /* menu-icon@2x.png in Resources */,
214 | );
215 | runOnlyForDeploymentPostprocessing = 0;
216 | };
217 | /* End PBXResourcesBuildPhase section */
218 |
219 | /* Begin PBXSourcesBuildPhase section */
220 | 273D113416F8841300C187E0 /* Sources */ = {
221 | isa = PBXSourcesBuildPhase;
222 | buildActionMask = 2147483647;
223 | files = (
224 | 273D114816F8841300C187E0 /* main.m in Sources */,
225 | 273D114C16F8841300C187E0 /* MFAppDelegate.m in Sources */,
226 | 274419D617BBAF990007ADE7 /* MFSideMenuShadow.m in Sources */,
227 | 273D116A16F884F900C187E0 /* DemoViewController.m in Sources */,
228 | 273D116C16F884F900C187E0 /* SideMenuViewController.m in Sources */,
229 | 276985BC1733D69200536685 /* MFSideMenuContainerViewController.m in Sources */,
230 | D081F051178E6AD3004A89D0 /* UIViewController+MFSideMenuAdditions.m in Sources */,
231 | );
232 | runOnlyForDeploymentPostprocessing = 0;
233 | };
234 | /* End PBXSourcesBuildPhase section */
235 |
236 | /* Begin PBXVariantGroup section */
237 | 273D114416F8841300C187E0 /* InfoPlist.strings */ = {
238 | isa = PBXVariantGroup;
239 | children = (
240 | 273D114516F8841300C187E0 /* en */,
241 | );
242 | name = InfoPlist.strings;
243 | sourceTree = "";
244 | };
245 | /* End PBXVariantGroup section */
246 |
247 | /* Begin XCBuildConfiguration section */
248 | 273D115316F8841300C187E0 /* Debug */ = {
249 | isa = XCBuildConfiguration;
250 | buildSettings = {
251 | ALWAYS_SEARCH_USER_PATHS = NO;
252 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
253 | CLANG_CXX_LIBRARY = "libc++";
254 | CLANG_ENABLE_OBJC_ARC = YES;
255 | CLANG_WARN_CONSTANT_CONVERSION = YES;
256 | CLANG_WARN_EMPTY_BODY = YES;
257 | CLANG_WARN_ENUM_CONVERSION = YES;
258 | CLANG_WARN_INT_CONVERSION = YES;
259 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
260 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
261 | COPY_PHASE_STRIP = NO;
262 | GCC_C_LANGUAGE_STANDARD = gnu99;
263 | GCC_DYNAMIC_NO_PIC = NO;
264 | GCC_OPTIMIZATION_LEVEL = 0;
265 | GCC_PREPROCESSOR_DEFINITIONS = (
266 | "DEBUG=1",
267 | "$(inherited)",
268 | );
269 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
270 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
271 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
272 | GCC_WARN_UNUSED_VARIABLE = YES;
273 | IPHONEOS_DEPLOYMENT_TARGET = 6.1;
274 | ONLY_ACTIVE_ARCH = YES;
275 | SDKROOT = iphoneos;
276 | TARGETED_DEVICE_FAMILY = "1,2";
277 | };
278 | name = Debug;
279 | };
280 | 273D115416F8841300C187E0 /* Release */ = {
281 | isa = XCBuildConfiguration;
282 | buildSettings = {
283 | ALWAYS_SEARCH_USER_PATHS = NO;
284 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
285 | CLANG_CXX_LIBRARY = "libc++";
286 | CLANG_ENABLE_OBJC_ARC = YES;
287 | CLANG_WARN_CONSTANT_CONVERSION = YES;
288 | CLANG_WARN_EMPTY_BODY = YES;
289 | CLANG_WARN_ENUM_CONVERSION = YES;
290 | CLANG_WARN_INT_CONVERSION = YES;
291 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
292 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
293 | COPY_PHASE_STRIP = YES;
294 | GCC_C_LANGUAGE_STANDARD = gnu99;
295 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
296 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
297 | GCC_WARN_UNUSED_VARIABLE = YES;
298 | IPHONEOS_DEPLOYMENT_TARGET = 6.1;
299 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
300 | SDKROOT = iphoneos;
301 | TARGETED_DEVICE_FAMILY = "1,2";
302 | VALIDATE_PRODUCT = YES;
303 | };
304 | name = Release;
305 | };
306 | 273D115616F8841300C187E0 /* Debug */ = {
307 | isa = XCBuildConfiguration;
308 | buildSettings = {
309 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
310 | GCC_PREFIX_HEADER = "MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController-Prefix.pch";
311 | INFOPLIST_FILE = "MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController-Info.plist";
312 | PRODUCT_NAME = "$(TARGET_NAME)";
313 | WRAPPER_EXTENSION = app;
314 | };
315 | name = Debug;
316 | };
317 | 273D115716F8841300C187E0 /* Release */ = {
318 | isa = XCBuildConfiguration;
319 | buildSettings = {
320 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
321 | GCC_PREFIX_HEADER = "MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController-Prefix.pch";
322 | INFOPLIST_FILE = "MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController-Info.plist";
323 | PRODUCT_NAME = "$(TARGET_NAME)";
324 | WRAPPER_EXTENSION = app;
325 | };
326 | name = Release;
327 | };
328 | /* End XCBuildConfiguration section */
329 |
330 | /* Begin XCConfigurationList section */
331 | 273D113316F8841300C187E0 /* Build configuration list for PBXProject "MFSideMenuDemoUITabBarController" */ = {
332 | isa = XCConfigurationList;
333 | buildConfigurations = (
334 | 273D115316F8841300C187E0 /* Debug */,
335 | 273D115416F8841300C187E0 /* Release */,
336 | );
337 | defaultConfigurationIsVisible = 0;
338 | defaultConfigurationName = Release;
339 | };
340 | 273D115516F8841300C187E0 /* Build configuration list for PBXNativeTarget "MFSideMenuDemoUITabBarController" */ = {
341 | isa = XCConfigurationList;
342 | buildConfigurations = (
343 | 273D115616F8841300C187E0 /* Debug */,
344 | 273D115716F8841300C187E0 /* Release */,
345 | );
346 | defaultConfigurationIsVisible = 0;
347 | defaultConfigurationName = Release;
348 | };
349 | /* End XCConfigurationList section */
350 | };
351 | rootObject = 273D113016F8841300C187E0 /* Project object */;
352 | }
353 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/DemoViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | //
7 |
8 | #import
9 |
10 | @interface DemoViewController : UIViewController
11 |
12 | - (IBAction)pushAnotherPressed:(id)sender;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/DemoViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // DemoViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 | //
7 |
8 | #import "DemoViewController.h"
9 | #import "MFSideMenu.h"
10 |
11 | @implementation DemoViewController
12 |
13 |
14 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
15 | return YES;
16 | }
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 | if(!self.title) self.title = @"Demo!";
21 |
22 | [self setupMenuBarButtonItems];
23 | }
24 |
25 | #pragma mark -
26 | #pragma mark - UIBarButtonItems
27 |
28 | - (void)setupMenuBarButtonItems {
29 | self.navigationItem.rightBarButtonItem = [self rightMenuBarButtonItem];
30 | if(self.menuContainerViewController.menuState == MFSideMenuStateClosed &&
31 | ![[self.navigationController.viewControllers objectAtIndex:0] isEqual:self]) {
32 | self.navigationItem.leftBarButtonItem = [self backBarButtonItem];
33 | } else {
34 | self.navigationItem.leftBarButtonItem = [self leftMenuBarButtonItem];
35 | }
36 | }
37 |
38 | - (UIBarButtonItem *)leftMenuBarButtonItem {
39 | return [[UIBarButtonItem alloc]
40 | initWithImage:[UIImage imageNamed:@"menu-icon.png"] style:UIBarButtonItemStyleBordered
41 | target:self
42 | action:@selector(leftSideMenuButtonPressed:)];
43 | }
44 |
45 | - (UIBarButtonItem *)rightMenuBarButtonItem {
46 | return [[UIBarButtonItem alloc]
47 | initWithImage:[UIImage imageNamed:@"menu-icon.png"] style:UIBarButtonItemStyleBordered
48 | target:self
49 | action:@selector(rightSideMenuButtonPressed:)];
50 | }
51 |
52 | - (UIBarButtonItem *)backBarButtonItem {
53 | return [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-arrow"]
54 | style:UIBarButtonItemStyleBordered
55 | target:self
56 | action:@selector(backButtonPressed:)];
57 | }
58 |
59 |
60 | #pragma mark -
61 | #pragma mark - UIBarButtonItem Callbacks
62 |
63 | - (void)backButtonPressed:(id)sender {
64 | [self.navigationController popViewControllerAnimated:YES];
65 | }
66 |
67 | - (void)leftSideMenuButtonPressed:(id)sender {
68 | [self.menuContainerViewController toggleLeftSideMenuCompletion:^{
69 | [self setupMenuBarButtonItems];
70 | }];
71 | }
72 |
73 | - (void)rightSideMenuButtonPressed:(id)sender {
74 | [self.menuContainerViewController toggleRightSideMenuCompletion:^{
75 | [self setupMenuBarButtonItems];
76 | }];
77 | }
78 |
79 |
80 | #pragma mark -
81 | #pragma mark - IBActions
82 |
83 | - (IBAction)pushAnotherPressed:(id)sender {
84 | DemoViewController *demoController = [[DemoViewController alloc]
85 | initWithNibName:@"DemoViewController"
86 | bundle:nil];
87 |
88 | [self.navigationController pushViewController:demoController animated:YES];
89 | }
90 |
91 | @end
92 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/DemoViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1552
5 | 12C60
6 | 3084
7 | 1187.34
8 | 625.00
9 |
10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
11 | 2083
12 |
13 |
14 | IBProxyObject
15 | IBUIButton
16 | IBUITextView
17 | IBUIView
18 |
19 |
20 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
21 |
22 |
23 | PluginDependencyRecalculationVersion
24 |
25 |
26 |
27 |
28 | IBFilesOwner
29 | IBCocoaTouchFramework
30 |
31 |
32 | IBFirstResponder
33 | IBCocoaTouchFramework
34 |
35 |
36 |
37 | 274
38 |
39 |
40 |
41 | 290
42 | {{20, 142}, {280, 37}}
43 |
44 |
45 |
46 | _NS:9
47 | NO
48 | IBCocoaTouchFramework
49 | 0
50 | 0
51 | 1
52 | Push Another Controller
53 |
54 | 3
55 | MQA
56 |
57 |
58 | 1
59 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
60 |
61 |
62 | 3
63 | MC41AA
64 |
65 |
66 | 2
67 | 15
68 |
69 |
70 | Helvetica-Bold
71 | 15
72 | 16
73 |
74 |
75 |
76 |
77 | 290
78 | {{20, 20}, {280, 102}}
79 |
80 |
81 |
82 | _NS:9
83 |
84 | 1
85 | MSAxIDEAA
86 |
87 | YES
88 | YES
89 | NO
90 | IBCocoaTouchFramework
91 | NO
92 |
93 |
94 | 2
95 | IBCocoaTouchFramework
96 |
97 |
98 | 1
99 | 14
100 |
101 |
102 | Helvetica
103 | 14
104 | 16
105 |
106 |
107 |
108 | {{0, 64}, {320, 504}}
109 |
110 |
111 |
112 |
113 | 3
114 | MQA
115 |
116 | 2
117 |
118 |
119 |
120 |
121 | NO
122 |
123 |
124 | IBUIScreenMetrics
125 |
126 | YES
127 |
128 |
129 |
130 |
131 |
132 | {320, 568}
133 | {568, 320}
134 |
135 |
136 | IBCocoaTouchFramework
137 | Retina 4 Full Screen
138 | 2
139 |
140 | IBCocoaTouchFramework
141 |
142 |
143 |
144 |
145 |
146 |
147 | view
148 |
149 |
150 |
151 | 4
152 |
153 |
154 |
155 | pushAnotherPressed:
156 |
157 |
158 | 7
159 |
160 | 6
161 |
162 |
163 |
164 |
165 |
166 | 0
167 |
168 |
169 |
170 |
171 |
172 | 1
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 | -1
182 |
183 |
184 | File's Owner
185 |
186 |
187 | -2
188 |
189 |
190 |
191 |
192 | 5
193 |
194 |
195 |
196 |
197 |
198 | 7
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 | DemoViewController
207 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
208 | UIResponder
209 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
210 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
211 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
212 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
213 |
214 |
215 |
216 |
217 |
218 | 18
219 |
220 |
221 |
222 |
223 | DemoViewController
224 | UIViewController
225 |
226 | pushAnotherPressed:
227 | id
228 |
229 |
230 | pushAnotherPressed:
231 |
232 | pushAnotherPressed:
233 | id
234 |
235 |
236 |
237 | IBProjectSource
238 | ./Classes/DemoViewController.h
239 |
240 |
241 |
242 |
243 | 0
244 | IBCocoaTouchFramework
245 |
246 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
247 |
248 |
249 | YES
250 | 3
251 | 2083
252 |
253 |
254 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/Default-568h@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/back-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/back-arrow.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/back-arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/back-arrow@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/menu-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/menu-icon.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/menu-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mikefrederick/MFSideMenu/ac0639391df9f4a81822d3272ac8c6feef338852/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/Images/menu-icon@2x.png
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/MFAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.h
3 | // MFSideMenuDemoUITabBarController
4 | //
5 | // Created by Michael Frederick on 3/19/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MFAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/MFAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFAppDelegate.m
3 | // MFSideMenuDemoUITabBarController
4 | //
5 | // Created by Michael Frederick on 3/19/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import "MFAppDelegate.h"
10 | #import "MFSideMenuContainerViewController.h"
11 | #import "DemoViewController.h"
12 | #import "SideMenuViewController.h"
13 |
14 | @implementation MFAppDelegate
15 |
16 | @synthesize window = _window;
17 |
18 | - (DemoViewController *)demoController {
19 | return [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
20 | }
21 |
22 | - (UINavigationController *)navigationController {
23 | return [[UINavigationController alloc]
24 | initWithRootViewController:[self demoController]];
25 | }
26 |
27 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
28 | {
29 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
30 |
31 | UITabBarController *tabBarController = [[UITabBarController alloc] init];
32 | [tabBarController setViewControllers:[NSArray arrayWithObjects:[self navigationController],
33 | [self navigationController], nil]];
34 |
35 | SideMenuViewController *leftSideMenuController = [[SideMenuViewController alloc] init];
36 | SideMenuViewController *rightSideMenuController = [[SideMenuViewController alloc] init];
37 | MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
38 | containerWithCenterViewController:tabBarController
39 | leftMenuViewController:leftSideMenuController
40 | rightMenuViewController:rightSideMenuController];
41 |
42 | self.window.rootViewController = container;
43 | [self.window makeKeyAndVisible];
44 |
45 | return YES;
46 | }
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | frederickdevelopment.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'MFSideMenuDemoUITabBarController' target in the 'MFSideMenuDemoUITabBarController' project
3 | //
4 |
5 | #import
6 |
7 | #ifndef __IPHONE_3_0
8 | #warning "This project uses features only available in iOS SDK 3.0 and later."
9 | #endif
10 |
11 | #ifdef __OBJC__
12 | #import
13 | #import
14 | #endif
15 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/SideMenuViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.h
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import
8 |
9 | @interface SideMenuViewController : UITableViewController
10 |
11 | @end
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/SideMenuViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SideMenuViewController.m
3 | // MFSideMenuDemo
4 | //
5 | // Created by Michael Frederick on 3/19/12.
6 |
7 | #import "SideMenuViewController.h"
8 | #import "MFSideMenu.h"
9 | #import "DemoViewController.h"
10 |
11 | @implementation SideMenuViewController
12 |
13 | #pragma mark -
14 | #pragma mark - UITableViewDataSource
15 |
16 | - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
17 | return [NSString stringWithFormat:@"Section %d", section];
18 | }
19 |
20 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
21 | return 2;
22 | }
23 |
24 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
25 | return 10;
26 | }
27 |
28 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
29 | static NSString *CellIdentifier = @"Cell";
30 |
31 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
32 | if (cell == nil) {
33 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
34 | }
35 |
36 | cell.textLabel.text = [NSString stringWithFormat:@"Item %d", indexPath.row];
37 |
38 | return cell;
39 | }
40 |
41 | #pragma mark -
42 | #pragma mark - UITableViewDelegate
43 |
44 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
45 | DemoViewController *demoController = [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
46 | demoController.title = [NSString stringWithFormat:@"Demo #%d-%d", indexPath.section, indexPath.row];
47 |
48 | UITabBarController *tabBarController = self.menuContainerViewController.centerViewController;
49 | UINavigationController *navigationController = (UINavigationController *)tabBarController.selectedViewController;
50 | NSArray *controllers = [NSArray arrayWithObject:demoController];
51 | navigationController.viewControllers = controllers;
52 | [self.menuContainerViewController setMenuState:MFSideMenuStateClosed];
53 | }
54 |
55 | @end
56 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Demos/MFSideMenuDemoUITabBarController/MFSideMenuDemoUITabBarController/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MFSideMenuDemoUITabBarController
4 | //
5 | // Created by Michael Frederick on 3/19/13.
6 | // Copyright (c) 2013 Michael Frederick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "MFAppDelegate.h"
12 |
13 | int main(int argc, char *argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MFAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | * Copyright (c) 2012, Michael Frederick
2 | * All rights reserved.
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions are met:
6 | * * Redistributions of source code must retain the above copyright
7 | * notice, this list of conditions and the following disclaimer.
8 | * * Redistributions in binary form must reproduce the above copyright
9 | * notice, this list of conditions and the following disclaimer in the
10 | * documentation and/or other materials provided with the distribution.
11 | * * Neither the name of Michael Frederick nor the
12 | * names of its contributors may be used to endorse or promote products
13 | * derived from this software without specific prior written permission.
14 | *
15 | * THIS SOFTWARE IS PROVIDED BY Michael Frederick ''AS IS'' AND ANY
16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | * DISCLAIMED. IN NO EVENT SHALL Michael Frederick BE LIABLE FOR ANY
19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/MFSideMenu.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'MFSideMenu'
3 | s.version = '0.5.5'
4 | s.license = 'BSD'
5 | s.summary = 'Facebook-like side menu for iOS.'
6 | s.homepage = 'https://github.com/mikefrederick/MFSideMenu'
7 | s.author = { 'Michael Frederick' => 'mike@viamike.com' }
8 | s.source = { :git => 'https://github.com/mikefrederick/MFSideMenu.git', :tag => s.version.to_s }
9 | s.platform = :ios
10 | s.requires_arc = true
11 | s.source_files = 'MFSideMenu/*'
12 | s.frameworks = 'QuartzCore'
13 | end
14 |
--------------------------------------------------------------------------------
/MFSideMenu.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
12 |
13 |
15 |
16 |
18 |
19 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/MFSideMenu.xcworkspace/xcshareddata/MFSideMenu.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 515D6BF1-B9FE-47D6-993F-1203ACC13D13
9 | IDESourceControlProjectName
10 | MFSideMenu
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | CD68483B-F67E-4A4D-B2FE-5CE4BCC519F7
14 | https://github.com/mikefrederick/MFSideMenu.git
15 |
16 | IDESourceControlProjectPath
17 | MFSideMenu.xcworkspace
18 | IDESourceControlProjectRelativeInstallPathDictionary
19 |
20 | CD68483B-F67E-4A4D-B2FE-5CE4BCC519F7
21 | ..
22 |
23 | IDESourceControlProjectURL
24 | https://github.com/mikefrederick/MFSideMenu.git
25 | IDESourceControlProjectVersion
26 | 110
27 | IDESourceControlProjectWCCIdentifier
28 | CD68483B-F67E-4A4D-B2FE-5CE4BCC519F7
29 | IDESourceControlProjectWCConfigurations
30 |
31 |
32 | IDESourceControlRepositoryExtensionIdentifierKey
33 | public.vcs.git
34 | IDESourceControlWCCIdentifierKey
35 | CD68483B-F67E-4A4D-B2FE-5CE4BCC519F7
36 | IDESourceControlWCCName
37 | MFSideMenu
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/MFSideMenu/MFSideMenu.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFSideMenu.h
3 | // MFSideMenuDemoBasic
4 | //
5 | // Created by Michael Frederick on 5/5/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import "MFSideMenuContainerViewController.h"
10 | #import "UIViewController+MFSideMenuAdditions.h"
--------------------------------------------------------------------------------
/MFSideMenu/MFSideMenuContainerViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFSideMenuContainerViewController.h
3 | // MFSideMenuDemoSplitViewController
4 | //
5 | // Created by Michael Frederick on 4/2/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MFSideMenuShadow.h"
11 |
12 | extern NSString * const MFSideMenuStateNotificationEvent;
13 |
14 | typedef enum {
15 | MFSideMenuPanModeNone = 0, // pan disabled
16 | MFSideMenuPanModeCenterViewController = 1 << 0, // enable panning on the centerViewController
17 | MFSideMenuPanModeSideMenu = 1 << 1, // enable panning on side menus
18 | MFSideMenuPanModeDefault = MFSideMenuPanModeCenterViewController | MFSideMenuPanModeSideMenu
19 | } MFSideMenuPanMode;
20 |
21 | typedef enum {
22 | MFSideMenuStateClosed, // the menu is closed
23 | MFSideMenuStateLeftMenuOpen, // the left-hand menu is open
24 | MFSideMenuStateRightMenuOpen // the right-hand menu is open
25 | } MFSideMenuState;
26 |
27 | typedef enum {
28 | MFSideMenuStateEventMenuWillOpen, // the menu is going to open
29 | MFSideMenuStateEventMenuDidOpen, // the menu finished opening
30 | MFSideMenuStateEventMenuWillClose, // the menu is going to close
31 | MFSideMenuStateEventMenuDidClose // the menu finished closing
32 | } MFSideMenuStateEvent;
33 |
34 |
35 | @interface MFSideMenuContainerViewController : UIViewController
36 |
37 | + (MFSideMenuContainerViewController *)containerWithCenterViewController:(id)centerViewController
38 | leftMenuViewController:(id)leftMenuViewController
39 | rightMenuViewController:(id)rightMenuViewController;
40 |
41 | @property (nonatomic, strong) id centerViewController;
42 | @property (nonatomic, strong) UIViewController *leftMenuViewController;
43 | @property (nonatomic, strong) UIViewController *rightMenuViewController;
44 |
45 | @property (nonatomic, assign) MFSideMenuState menuState;
46 | @property (nonatomic, assign) MFSideMenuPanMode panMode;
47 |
48 | // menu open/close animation duration -- user can pan faster than default duration, max duration sets the limit
49 | @property (nonatomic, assign) CGFloat menuAnimationDefaultDuration;
50 | @property (nonatomic, assign) CGFloat menuAnimationMaxDuration;
51 |
52 | // width of the side menus
53 | @property (nonatomic, assign) CGFloat menuWidth;
54 | @property (nonatomic, assign) CGFloat leftMenuWidth;
55 | @property (nonatomic, assign) CGFloat rightMenuWidth;
56 |
57 | // shadow
58 | @property (nonatomic, strong) MFSideMenuShadow *shadow;
59 |
60 | // menu slide-in animation
61 | @property (nonatomic, assign) BOOL menuSlideAnimationEnabled;
62 | @property (nonatomic, assign) CGFloat menuSlideAnimationFactor; // higher = less menu movement on animation
63 |
64 |
65 | - (void)toggleLeftSideMenuCompletion:(void (^)(void))completion;
66 | - (void)toggleRightSideMenuCompletion:(void (^)(void))completion;
67 | - (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))completion;
68 | - (void)setMenuWidth:(CGFloat)menuWidth animated:(BOOL)animated;
69 | - (void)setLeftMenuWidth:(CGFloat)leftMenuWidth animated:(BOOL)animated;
70 | - (void)setRightMenuWidth:(CGFloat)rightMenuWidth animated:(BOOL)animated;
71 |
72 | // can be used to attach a pan gesture recognizer to a custom view
73 | - (UIPanGestureRecognizer *)panGestureRecognizer;
74 |
75 | @end
--------------------------------------------------------------------------------
/MFSideMenu/MFSideMenuShadow.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFSideMenuShadow.h
3 | // MFSideMenuDemoSearchBar
4 | //
5 | // Created by Michael Frederick on 5/13/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MFSideMenuShadow : NSObject
12 |
13 | @property (nonatomic, assign) BOOL enabled;
14 | @property (nonatomic, assign) CGFloat radius;
15 | @property (nonatomic, assign) CGFloat opacity;
16 | @property (nonatomic, strong) UIColor *color;
17 | @property (nonatomic, assign) UIView *shadowedView;
18 |
19 | + (MFSideMenuShadow *)shadowWithView:(UIView *)shadowedView;
20 | + (MFSideMenuShadow *)shadowWithColor:(UIColor *)color radius:(CGFloat)radius opacity:(CGFloat)opacity;
21 |
22 | - (void)draw;
23 | - (void)shadowedViewWillRotate;
24 | - (void)shadowedViewDidRotate;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/MFSideMenu/MFSideMenuShadow.m:
--------------------------------------------------------------------------------
1 | //
2 | // MFSideMenuShadow.m
3 | // MFSideMenuDemoSearchBar
4 | //
5 | // Created by Michael Frederick on 5/13/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import "MFSideMenuShadow.h"
10 | #import
11 |
12 | @implementation MFSideMenuShadow
13 |
14 | @synthesize color = _color;
15 | @synthesize opacity = _opacity;
16 | @synthesize radius = _radius;
17 | @synthesize enabled = _enabled;
18 | @synthesize shadowedView;
19 |
20 | + (MFSideMenuShadow *)shadowWithView:(UIView *)shadowedView {
21 | MFSideMenuShadow *shadow = [MFSideMenuShadow shadowWithColor:[UIColor blackColor] radius:10.0f opacity:0.75f];
22 | shadow.shadowedView = shadowedView;
23 | return shadow;
24 | }
25 |
26 | + (MFSideMenuShadow *)shadowWithColor:(UIColor *)color radius:(CGFloat)radius opacity:(CGFloat)opacity {
27 | MFSideMenuShadow *shadow = [MFSideMenuShadow new];
28 | shadow.color = color;
29 | shadow.radius = radius;
30 | shadow.opacity = opacity;
31 | return shadow;
32 | }
33 |
34 | - (id)init {
35 | self = [super init];
36 | if(self) {
37 | self.color = [UIColor blackColor];
38 | self.opacity = 0.75f;
39 | self.radius = 10.0f;
40 | self.enabled = YES;
41 | }
42 | return self;
43 | }
44 |
45 |
46 | #pragma mark -
47 | #pragma mark - Property Setters
48 |
49 | - (void)setEnabled:(BOOL)shadowEnabled {
50 | _enabled = shadowEnabled;
51 | [self draw];
52 | }
53 |
54 | - (void)setRadius:(CGFloat)shadowRadius {
55 | _radius = shadowRadius;
56 | [self draw];
57 | }
58 |
59 | - (void)setColor:(UIColor *)shadowColor {
60 | _color = shadowColor;
61 | [self draw];
62 | }
63 |
64 | - (void)setOpacity:(CGFloat)shadowOpacity {
65 | _opacity = shadowOpacity;
66 | [self draw];
67 | }
68 |
69 |
70 | #pragma mark -
71 | #pragma mark - Drawing
72 |
73 | - (void)draw {
74 | if(_enabled) {
75 | [self show];
76 | } else {
77 | [self hide];
78 | }
79 | }
80 |
81 | - (void)show {
82 | CGRect pathRect = self.shadowedView.bounds;
83 | pathRect.size = self.shadowedView.frame.size;
84 | self.shadowedView.layer.shadowPath = [UIBezierPath bezierPathWithRect:pathRect].CGPath;
85 | self.shadowedView.layer.shadowOpacity = self.opacity;
86 | self.shadowedView.layer.shadowRadius = self.radius;
87 | self.shadowedView.layer.shadowColor = [self.color CGColor];
88 | self.shadowedView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
89 | }
90 |
91 | - (void)hide {
92 | self.shadowedView.layer.shadowOpacity = 0.0f;
93 | self.shadowedView.layer.shadowRadius = 0.0f;
94 | }
95 |
96 |
97 | #pragma mark -
98 | #pragma mark - ShadowedView Rotation
99 |
100 | - (void)shadowedViewWillRotate {
101 | self.shadowedView.layer.shadowPath = nil;
102 | self.shadowedView.layer.shouldRasterize = YES;
103 | }
104 |
105 | - (void)shadowedViewDidRotate {
106 | [self draw];
107 | self.shadowedView.layer.shouldRasterize = NO;
108 | }
109 |
110 | @end
111 |
--------------------------------------------------------------------------------
/MFSideMenu/UIViewController+MFSideMenuAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MFSideMenuAdditions.h
3 | // MFSideMenuDemoBasic
4 | //
5 | // Created by Michael Frederick on 4/2/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import
10 | @class MFSideMenuContainerViewController;
11 |
12 | // category on UIViewController to provide reference to the menuContainerViewController in any of the contained View Controllers
13 | @interface UIViewController (MFSideMenuAdditions)
14 |
15 | @property(nonatomic,readonly,retain) MFSideMenuContainerViewController *menuContainerViewController;
16 |
17 | @end
18 |
19 |
--------------------------------------------------------------------------------
/MFSideMenu/UIViewController+MFSideMenuAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MFSideMenuAdditions.m
3 | // MFSideMenuDemoBasic
4 | //
5 | // Created by Michael Frederick on 4/2/13.
6 | // Copyright (c) 2013 Frederick Development. All rights reserved.
7 | //
8 |
9 | #import "UIViewController+MFSideMenuAdditions.h"
10 | #import "MFSideMenuContainerViewController.h"
11 |
12 | @implementation UIViewController (MFSideMenuAdditions)
13 |
14 | @dynamic menuContainerViewController;
15 |
16 | - (MFSideMenuContainerViewController *)menuContainerViewController {
17 | id containerView = self;
18 | while (![containerView isKindOfClass:[MFSideMenuContainerViewController class]] && containerView) {
19 | if ([containerView respondsToSelector:@selector(parentViewController)])
20 | containerView = [containerView parentViewController];
21 | if ([containerView respondsToSelector:@selector(splitViewController)] && !containerView)
22 | containerView = [containerView splitViewController];
23 | }
24 | return containerView;
25 | }
26 |
27 | @end
--------------------------------------------------------------------------------
/README.mdown:
--------------------------------------------------------------------------------
1 | #MFSideMenu
2 |
3 | This project was inspired by the side-menu functionality seen in the Facebook iOS app. MFSideMenu utilizes view controller containment and gives you a simple API for implementing side-menu functionality. It integrates with storyboard-based apps as well as traditional setups.
4 |
5 | =======
6 |
7 |  
8 |
9 | ##Features
10 |
11 | - Universal device support (iPhone + iPad)
12 | - Universal orientation support (Portrait + Landscape)
13 | - Menus on the left and right side of the screen.
14 | - Storyboard support
15 | - View controller containment
16 | - Works with UINavigationController, UITabBarController, and other types of view controllers
17 | - Nice set of configuration options
18 | - Lightweight, simple and readable code.
19 |
20 |
21 | ##Installation
22 |
23 | ####CocoaPods
24 | Add `pod 'MFSideMenu'` to your Podfile.
25 |
26 | ####Manually
27 | Add the `MFSideMenu` folder to your project. Add QuartzCore to your project. MFSideMenu uses ARC. If you have a project that doesn't use ARC, just add the `-fobjc-arc` compiler flag to the MFSideMenu files.
28 |
29 |
30 | ##Usage
31 |
32 | ###Basic Setup
33 |
34 | In your app delegate:
35 | ```objective-c
36 | #import "MFSideMenu.h"
37 |
38 | MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
39 | containerWithCenterViewController:centerViewController
40 | leftMenuViewController:leftMenuViewController
41 | rightMenuViewController:rightMenuViewController];
42 | self.window.rootViewController = container;
43 | [self.window makeKeyAndVisible];
44 | ```
45 |
46 | ###Opening & Closing Menus
47 |
48 | ```objective-c
49 | // toggle the left side menu
50 | [self.menuContainerViewController toggleLeftSideMenuCompletion:^{}];
51 | // toggle the right side menu
52 | [self.menuContainerViewController toggleRightSideMenuCompletion:^{}];
53 | // close the side menu
54 | [self.menuContainerViewController setMenuState:MFSideMenuStateClosed completion:^{}];
55 | // open the left side menu
56 | [self.menuContainerViewController setMenuState:MFSideMenuStateLeftMenuOpen completion:^{}];
57 | // open the right side menu
58 | [self.menuContainerViewController setMenuState:MFSideMenuStateRightMenuOpen completion:^{}];
59 | ```
60 |
61 | ###Pan Modes
62 |
63 | You can specify which areas you want to allow pan gestures on:
64 |
65 | ```objective-c
66 | // enable panning on the center view controllers & the side menus (this is the default behavior):
67 | menuContainerViewController.panMode = MFSideMenuPanModeCenterViewController | MFSideMenuPanModeSideMenu;
68 |
69 | // disable panning on the side menus, only allow panning on the center view controller:
70 | menuContainerViewController.panMode = MFSideMenuPanModeCenterViewController;
71 |
72 | // disable all panning
73 | menuContainerViewController.panMode = MFSideMenuPanModeNone;
74 | ```
75 |
76 | ###Panning Custom Views
77 |
78 | You can add panning to any view like so:
79 |
80 | ```objective-c
81 | [panView addGestureRecognizer:[self.menuContainerViewController panGestureRecognizer]];
82 | ```
83 |
84 | ###Listening for Menu Events
85 |
86 | You can listen for menu state event changes (i.e. menu will open, menu did open, etc.). See MFSideMenuContainerViewController.h for the different types of events.
87 |
88 | ```objective-c
89 | [[NSNotificationCenter defaultCenter] addObserver:self
90 | selector:@selector(menuStateEventOccurred:)
91 | name:MFSideMenuStateNotificationEvent
92 | object:nil];
93 | - (void)menuStateEventOccurred:(NSNotification *)notification {
94 | MFSideMenuStateEvent event = [[[notification userInfo] objectForKey:@"eventType"] intValue];
95 | MFSideMenuContainerViewController *containerViewController = notification.object;
96 | // ...
97 | }
98 | ```
99 |
100 | ###Menu Slide Animation
101 |
102 | With this option enabled, the side menus will slide in & out with the center view controller. This effect is similar to the Wunderlist side menu.
103 |
104 | ```objective-c
105 | // enable the menu slide animation
106 | [menuContainerViewController setMenuSlideAnimationEnabled:YES];
107 |
108 | // control the exaggeration of the menu slide animation
109 | [menuContainerViewController setMenuSlideAnimationFactor:3.0f];
110 | ```
111 |
112 | ###Shadow
113 |
114 | MFSideMenu gives you the option to show a shadow between the center view controller & the side menus.
115 |
116 | ```objective-c
117 | // enable/disable the shadow
118 | [menuContainerViewController.shadow setEnabled:YES];
119 |
120 | // set the radius of the shadow
121 | [menuContainerViewController.shadow setRadius:10.0f];
122 |
123 | // set the color of the shadow
124 | [menuContainerViewController.shadow setColor:[UIColor blackColor]];
125 |
126 | // set the opacity of the shadow
127 | [menuContainerViewController.shadow setOpacity:0.75f];
128 |
129 | ```
130 |
131 | ##Contact
132 |
133 | [@mike_frederick](http://twitter.com/mike_frederick)
134 |
--------------------------------------------------------------------------------