Compare commits

...

70 Commits

Author SHA1 Message Date
Anton d48909d9c4 Remove excess method 2015-10-30 03:45:46 +03:00
Anton 71eb343abe Slide menu open/close animation depends on currently opening part 2015-10-29 23:55:01 +03:00
Anton 95f692c225 Slide menu notifications extends params added 2015-10-23 17:19:45 +03:00
Nikolai Ashanin 42e62a4dbd Update SlideNavigationController.m
remove reverse when menu did end close
2015-10-07 18:30:01 +03:00
Nikolai Ashanin 2ed9400c82 Update SlideNavigationController.m
slide menu open/close different durations
2015-10-07 18:08:40 +03:00
Anton 06deaf308c View controller is opening when menu is starting to close 2015-10-06 14:21:09 +03:00
Anton f3b60362da Add duration on opening and closing animations
Some refactoring
2015-08-28 17:38:25 +03:00
Anton 9550d4719b Slide menu show new controller after menu closing 2015-08-27 17:11:42 +03:00
Anton d088879c28 Remove tap gesture recognizer disabling on viewWllLayoutSubview event 2015-07-30 19:26:21 +03:00
iON1k 5ef5a8d832 Merge pull request #1 from TouchInstinct/feature/swipeMenuBeginEvent
Feature/swipe menu begin event
2015-07-01 16:18:29 +03:00
Павел Круглов 0da57dfd53 Fixed orientation issues. 2015-07-01 15:58:20 +03:00
Павел Круглов 240684c788 Hook point for swipe menu begin. 2015-06-30 18:18:37 +03:00
Павел Круглов c6c729bb52 Merge commit '7fb3ec03e919a6d4a5c622f224c2277ace85c61f' into feature/swipeMenuBeginEvent 2015-06-30 18:10:29 +03:00
Aryan Ghassemi 7fb3ec03e9 Fixed is landscape issues #138 2015-04-22 20:25:52 -07:00
Aryan Ghassemi a9ca4b49b0 Update README.md 2015-04-20 14:48:26 -07:00
Aryan Ghassemi 363306a5c7 Merge pull request #127 from aryaxt/FixInterfaceOrientationWarning
Fixed interfaceOrientation deprecated warning
2015-04-11 10:51:47 -07:00
Aryan Ghassemi 4ce138d4e9 Update pod spec for version 1.4.6 2015-04-11 10:49:22 -07:00
Aryan Ghassemi 43cb763d79 Fixed interfaceOrientation deprecated warning 2015-04-11 10:43:38 -07:00
Aryan Ghassemi 8681050dd0 Update README.md 2015-03-11 21:48:41 -07:00
Aryan Ghassemi 98591515e6 Merge pull request #128 from aryaxt/Develop
Turning shouldRecognizeSimultaneouslyWithGestureRecognizer off
2015-03-11 21:34:46 -07:00
Aryan Ghassemi 1a1b8523ec Turning shouldRecognizeSimultaneouslyWithGestureRecognizer off it's causing many issues 2015-03-11 21:32:56 -07:00
Aryan Ghassemi 3c1b09fe74 Updated pod spec for version 1.4.5 2015-03-01 19:18:26 -08:00
Aryan Ghassemi 6a9333e81b Merge pull request #113 from aryaxt/Develop
Version 1.4.5
2015-03-01 19:15:53 -08:00
Aryan Ghassemi 07e14208be Merge pull request #120 from loevborg/master
Small change to pod-spec
2015-03-01 19:14:48 -08:00
loevborg 22c03d987e Removed local representation of pod spec 2015-02-17 14:24:45 +01:00
loevborg 0e1ac70eeb Changes to pod spec
Removed the source/assets-png’s from s.source_files, since this causes
warnings when compiling the pod in project.
The source/assets is correctly part of the pod spec: s.resources, and
this is the only place it should appear
2015-02-17 14:22:39 +01:00
Aryan Ghassemi 2cf2b31c62 Merge pull request #114 from pnicholls/master
Added call to super in SlideNavigationController's viewWillTransitionToSize method
2015-02-16 10:28:38 -08:00
Peter Nicholls f9909b669f add a missing call to super in the SlideNavigationController viewWillTransitionToSize method 2015-01-31 15:58:06 +11:00
Aryan Ghassemi 792fb82d6b Update README.md 2015-01-25 08:58:18 -08:00
Aryan eb2de83daf #79 and #90 Allow simultaneous gestures to be detected by the menu 2015-01-25 08:50:52 -08:00
Aryan 2786733c82 Code formatting 2015-01-25 08:49:13 -08:00
Aryan 9d38ca4c76 Fixed #103 add initWithNavigationBarClass to slide menu 2015-01-25 08:48:54 -08:00
Aryan Ghassemi c2638e8935 Merge pull request #102 from masterrr/master
fix typo
2014-12-14 12:14:49 -08:00
masterrr 907eee38e8 fix typo 2014-12-11 21:06:20 +03:00
Aryan 4c66f6c25c Allow configuring animation duration/option 2014-11-28 16:19:34 -08:00
Aryan Ghassemi 810457bb73 Merge pull request #97 from aryaxt/Develop
Version 1.4.4
2014-11-28 14:18:00 -08:00
Aryan 43f62e7321 removed border from menus in the demo 2014-11-28 14:12:13 -08:00
Aryan 7dba83b832 Changed podspec version to 1.4.4 2014-11-28 14:03:58 -08:00
Aryan 352a127909 Fixed #89. Slide menu initially appears on the wrong side when using slide animation 2014-11-28 12:26:21 -08:00
Aryan f2d50da1f6 Fixed #93. Make sure that when the menu is changed the old view is removed 2014-11-28 12:24:45 -08:00
Aryan cf05a15b2f A right bar button that is added in storyboard, and has nothing todo with slide functionality 2014-11-28 12:23:23 -08:00
Aryan Ghassemi 5aa1fbcd94 Merge pull request #75 from aryaxt/iOS8-Compatability
iOS 8 fixes including bug #66
2014-10-01 09:11:50 -07:00
Aryan ffa26fba5b iOS 8 fixes including bug #66 2014-10-01 08:57:45 -07:00
Aryan Ghassemi 81378731d9 Merge pull request #73 from aryaxt/Develop
Posting Notifications for menu state open/close/reveal
2014-09-06 13:46:34 -07:00
Aryan eca136202c Added Notifications for closing/opening/revealing menu #32 2014-09-06 13:39:48 -07:00
Aryan 3513ce023a Updating project settings 2014-09-06 12:57:26 -07:00
Aryan Ghassemi da97baea8c Update README.md 2014-09-06 12:10:45 -07:00
Aryan Ghassemi 5cf9218a78 Update README.md 2014-08-01 09:57:54 -07:00
Aryan Ghassemi f36d092d32 Update README.md 2014-08-01 09:54:35 -07:00
Aryan 705b9b9371 Updated pod file 2014-07-12 20:23:23 -07:00
Aryan Ghassemi 437270ae30 Fixed issue where sometimes when swiping really quick it's possible to see the wrong menu 2014-06-21 17:58:57 -07:00
Aryan Ghassemi 2a6be6a9fb Merge branch 'master' of https://github.com/aryaxt/iOS-Slide-Menu
* 'master' of https://github.com/aryaxt/iOS-Slide-Menu:
  Update README.md
2014-04-30 04:31:47 -07:00
Aryan Ghassemi 9e28dcbfb8 Update README.md 2014-04-30 04:31:04 -07:00
Aryan Ghassemi 1c341f78e0 Update README.md 2014-04-29 21:25:33 -07:00
Aryan Ghassemi 7a6dcf2d9d Created a demo to demonstrate different features of SlideNavigationController 2014-04-29 20:58:01 -07:00
Aryan Ghassemi 136b1aecf0 Fixed typo in setter method of "enableShadow" 2014-04-20 17:55:46 -07:00
Aryan Ghassemi 19f01241d8 Allow limiting the pan gesture to the sides of the view only. This would be helpful if you want to use the slide-delete functionality of the UITableView and have slide-menu-pan-gesture at the same time 2014-04-20 09:47:49 -07:00
Aryan Ghassemi 3aff93e08e Throwing an exception when more than 1 instance of SlideNavigationController is being initialized. Can't use dispatch once since SlideNavigationController van be initialized using different constructors 2014-04-20 09:16:59 -07:00
Aryan Ghassemi fd9a508323 - Added option to enable/disable shadow 2014-04-19 14:08:55 -07:00
Aryan Ghassemi 38f6bb528c Added new methods used for switching between ViewControllers and deprecated switchToViewController:withCompletion:. These new methods have more meaningfull names and decribe exactly what happends during a switch. You can also disable slide out animation using these new methods 2014-04-19 13:44:21 -07:00
Aryan Ghassemi d1281e7361 Bug #30 - Turn off interactivePopGestureRecognizer when the slide menu is open. 2014-04-19 09:49:09 -07:00
Aryan Ghassemi 8095b8c58c - Fixed duplicate viewControllers in storyboard in demo 2014-03-14 19:56:43 -07:00
Aryan Ghassemi d72c99be3c Update README.md 2014-02-07 13:10:14 -08:00
Aryan Ghassemi 8939751726 Update README.md 2014-02-07 13:09:21 -08:00
Aryan Ghassemi 439a6d76aa - Added bounce functionality (Let's say the right menu is for notifications, when you receive notification you bounce the right menu to let the user know that they should open the right menu to view the notification) 2014-02-07 13:07:26 -08:00
Aryan Ghassemi 220512c37f - Reusing logic to enable/disable tap
- Moved this logic to the correct methods (accidentally added to willLayoutSubviews instead of willRotateToInterfaceOrientation)
2014-02-02 12:23:30 -08:00
Aryan Ghassemi a718c6a097 - Fixing glitch, by removing tapGestureRecognizer during rotation 2014-02-02 12:13:10 -08:00
Aryan Ghassemi 25e35c5742 - Simplify code
- Make sure that user interaction is enable again after device rotates (while menu is open)
2014-02-02 12:05:37 -08:00
Aryan Ghassemi af932304ad Merge pull request #17 from nullproduction/master
Blocking gestures in minimized topViewController
- Gonna make some change to fix the glitch that happens when menu is open and device rotates
2014-02-02 12:00:45 -08:00
nullproduction e04b5f806a Blocking gestures in minimized topViewController 2014-01-31 15:34:15 +04:00
26 changed files with 1573 additions and 997 deletions

View File

@ -3,14 +3,24 @@ iOS-Slide-Menu
iOS Slide Menu built on top of UINavigationController, with configurable buttons, reveal animations, and tap/swiper gesture recognizers. iOS Slide Menu built on top of UINavigationController, with configurable buttons, reveal animations, and tap/swiper gesture recognizers.
- [Setup](https://github.com/aryaxt/iOS-Slide-Menu#setup) - [Setup](https://github.com/aryaxt/iOS-Slide-Menu#setup)
- [Switch ViewController](https://github.com/aryaxt/iOS-Slide-Menu#switch-between-viewcontrollers)
- [Enable/Disable Left/Right Menu](https://github.com/aryaxt/iOS-Slide-Menu#configuring-left-and-right-menu-for-different-viewcontrollers) - [Enable/Disable Left/Right Menu](https://github.com/aryaxt/iOS-Slide-Menu#configuring-left-and-right-menu-for-different-viewcontrollers)
- [Public Properties](https://github.com/aryaxt/iOS-Slide-Menu#public-properties) - [Public Properties](https://github.com/aryaxt/iOS-Slide-Menu#public-properties)
- [Public Methods](https://github.com/aryaxt/iOS-Slide-Menu#public-methods) - [Public Methods](https://github.com/aryaxt/iOS-Slide-Menu#public-methods)
- [Custom Animations](https://github.com/aryaxt/iOS-Slide-Menu#custom-animations) - [Custom Animations](https://github.com/aryaxt/iOS-Slide-Menu#custom-animations)
- [Notifications](https://github.com/aryaxt/iOS-Slide-Menu#notifications)
![alt tag](https://raw.github.com/aryaxt/iOS-Slide-Menu/master/slideMenuAnimation.gif) ![alt tag](https://raw.github.com/aryaxt/iOS-Slide-Menu/master/slideMenuAnimation.gif)
Version 1.4.0 Notes
---------
```switchToViewController:withCompletion:``` method has been deprecated. In order to get the exact same behavior use ```popToRootAndSwitchToViewController:withCompletion```
New features:
- Allows limiting pan gesture to the sides of the view
- Allows turning shadow on/off
- Allows turning slide-out animation on/off when switching between viewControllers
- Minor bug fixes
Version 1.3.0 Notes Version 1.3.0 Notes
--------- ---------
If you are updating from previous versions you'll get compile errors, due to changes to RevealAnimations. If you are updating from previous versions you'll get compile errors, due to changes to RevealAnimations.
@ -23,25 +33,18 @@ Setup
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ {
LeftMenuViewController *leftMenu = [[LeftMenuViewController alloc] init]; LeftMenuViewController *leftMenu = [[LeftMenuViewController alloc] init];
RightMenuViewController *righMenu = [[RightMenuViewController alloc] init]; RightMenuViewController *rightMenu = [[RightMenuViewController alloc] init];
[SlideNavigationController sharedInstance].righMenu = rightMenu; [SlideNavigationController sharedInstance].rightMenu = rightMenu;
[SlideNavigationController sharedInstance].leftMenu = leftMenu; [SlideNavigationController sharedInstance].leftMenu = leftMenu;
// Override point for customization after application launch. // Override point for customization after application launch.
return YES; return YES;
} }
``` ```
Switch Between ViewControllers
----------
Let's say a menu item was selected
```
SomeViewController *vc = [[SomeViewController alloc] init];
[[SlideNavigationController sharedInstance] switchToViewController:vc withCompletion:nil];
```
Configuring Left and Right menu for different Viewcontrollers Configuring Left and Right menu for different Viewcontrollers
--------- ---------
You decide whether to enable or disable slide functionality on each viewController by implementing the following delegate methods of SlideNavigationControllerDelegate. These methods are optional, and if not implemented the menu functionality will be disabled for that particulat viewController. You decide whether to enable or disable slide functionality on **each viewController** by implementing the following delegate methods of SlideNavigationControllerDelegate. These methods are optional, and if not implemented the menu functionality will be disabled for that particulat viewController.
``` ```
@interface MyViewController : UIViewController <SlideNavigationControllerDelegate> @interface MyViewController : UIViewController <SlideNavigationControllerDelegate>
@end @end
@ -75,6 +78,12 @@ This can be usefull when you have a menu item, and when the user selects an alre
When set to YES user can swipe to open the menu When set to YES user can swipe to open the menu
When set to NO swipe is disabled, and use can only open the menu using the UIBarButtonItem added to the navigationBar When set to NO swipe is disabled, and use can only open the menu using the UIBarButtonItem added to the navigationBar
######panGestureSideOffset
This property allows you to limit the gesture to the sides of the view. For instance setting this value to 50 means touches are limited to 50 pixels to the right and 50 pixels to the left of the view. This could be useful if you are expecting slide-to-delete functionality on UITableViews.
Default value of panGestureSideOffset is set to 0. Setting panGestureSideOffset to 0 means touches are detected in the whole view if enableSwipeGesture is set to true.
###### enableShadow
A boolean that allows you to turn shadow on/off. On default shadow is set to true
###### rightMenu ###### rightMenu
The viewController of the right menu in the navigationController The viewController of the right menu in the navigationController
###### leftMenu ###### leftMenu
@ -87,6 +96,10 @@ Behaves exactly the same as leftbarButtonItem, but it's used as the right button
Default value of portraitSlideOffset is 60. This means when the menu is open, the width of the visible portion of the navigation controller is 60 pixels in portrait mode Default value of portraitSlideOffset is 60. This means when the menu is open, the width of the visible portion of the navigation controller is 60 pixels in portrait mode
###### landscapeSlideOffset ###### landscapeSlideOffset
Default value of portraitSlideOffset is 60. This means when the menu is open, the width of the visible portion of the navigation controller is 60 pixels in landscape mode Default value of portraitSlideOffset is 60. This means when the menu is open, the width of the visible portion of the navigation controller is 60 pixels in landscape mode
###### menuRevealAnimationDuration
Default value of animation duration is .3, this property allows configuring animation duration
###### menuRevealAnimationOption
Defaults to UIViewAnimationOptionCurveEaseOut, you can change this property to configure animation options
###### menuRevealAnimator ###### menuRevealAnimator
menuRevealAnimator is used to animate the left/right menu during reveal. The default value is nil, that means no animations occure when opening/closing the menu. menuRevealAnimator is used to animate the left/right menu during reveal. The default value is nil, that means no animations occure when opening/closing the menu.
@ -108,7 +121,19 @@ Public Methods
Returns the singleton instance of SlideNavigationController Returns the singleton instance of SlideNavigationController
###### - (void)switchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion; ###### - (void)switchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion;
Pops to root ViewController, then pushes the new ViewController and finally calls the completion This method is deprecated
###### - (void)popToRootAndSwitchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion;
Pops to root view controller and calls the completion.
###### - (void)popToRootAndSwitchToViewController:(UIViewController *)viewController withSlideOutAnimation:(BOOL)slideOutAnimation andCompletion:(void (^)())completion;
Similar to previous method, but allows turning on/off slide-out-animation during the switch
###### - (void)popAllAndSwitchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion;
Replaces the ViewController stack with a new stack that includes the new ViewController, and calls completion
###### - (void)popAllAndSwitchToViewController:(UIViewController *)viewController withSlideOutAnimation:(BOOL)slideOutAnimation andCompletion:(void (^)())completion;
Similar to previous method, but allows turning on/off slide-out-animation during the switch
###### - (void)openMenu:(Menu)menu withCompletion:(void (^)())completion; ###### - (void)openMenu:(Menu)menu withCompletion:(void (^)())completion;
Opens a given menu and calls the completion block oppon animation completion Opens a given menu and calls the completion block oppon animation completion
@ -118,6 +143,7 @@ Closes the menu and calls the completion block oppon animation completion
###### - (void)toggleLeftMenu; ###### - (void)toggleLeftMenu;
Toggles the left menu open or close depending on the existing state. This was made public in order to pass the selector to a custom UIBarButtonItem (ex: UIBarButtonItem with a button as a custom view) Toggles the left menu open or close depending on the existing state. This was made public in order to pass the selector to a custom UIBarButtonItem (ex: UIBarButtonItem with a button as a custom view)
``` ```
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[button setImage:[UIImage imageNamed:@"menu-button"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"menu-button"] forState:UIControlStateNormal];
@ -126,6 +152,8 @@ UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomVie
[SlideNavigationController sharedInstance].rightBarButtonItem = rightBarButtonItem; [SlideNavigationController sharedInstance].rightBarButtonItem = rightBarButtonItem;
``` ```
###### - (void)bounceMenu:(Menu)menu withCompletion:(void (^)())completion;
Bounces either right or left menu, and calls the completion block oppon animation completion
###### - (void)toggleRightMenu; ###### - (void)toggleRightMenu;
Works exactly the same as toggleLeftMenu, but used to toggle left menu Works exactly the same as toggleLeftMenu, but used to toggle left menu
@ -144,3 +172,18 @@ This method gets called as the menu reveal occurs, and passes the progress to be
This method gets called if for any resons the instance of animator is being changed. For instance, the animator is changed from SlideNavigationContorllerAnimatorFade to SlideNavigationContorllerAnimatorSlide. In this method you should cleanup the state of the menu if neede. For instance if you added a view to the menu for reveal animation, you should remove it when clear gets called. This method gets called if for any resons the instance of animator is being changed. For instance, the animator is changed from SlideNavigationContorllerAnimatorFade to SlideNavigationContorllerAnimatorSlide. In this method you should cleanup the state of the menu if neede. For instance if you added a view to the menu for reveal animation, you should remove it when clear gets called.
Public Methods Public Methods
Notifications
---------
###### SlideNavigationControllerDidOpen
This notification is posted EVERY time the menu goes inot a complete open state
Userinfo contains a value with key "menu", which could have 2 values "left" and "right"
###### SlideNavigationControllerDidClose
This notification is posted EVERY time the menu goes inot a complete close state
Userinfo contains a value with key "menu", which could have 2 values "left" and "right"
###### SlideNavigationControllerDidReveal
This notification is posted once everytim a menu reveals
Userinfo contains a value with key "menu", which could have 2 values "left" and "right"

View File

@ -18,7 +18,6 @@
15371EF91728E3B400A508F4 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 15371EF81728E3B400A508F4 /* Default-568h@2x.png */; }; 15371EF91728E3B400A508F4 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 15371EF81728E3B400A508F4 /* Default-568h@2x.png */; };
15371EFC1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 15371EFA1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard */; }; 15371EFC1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 15371EFA1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard */; };
15371EFF1728E3B400A508F4 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 15371EFD1728E3B400A508F4 /* MainStoryboard_iPad.storyboard */; }; 15371EFF1728E3B400A508F4 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 15371EFD1728E3B400A508F4 /* MainStoryboard_iPad.storyboard */; };
15371F0A1728E3B400A508F4 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15371F091728E3B400A508F4 /* SenTestingKit.framework */; };
15371F0B1728E3B400A508F4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15371EE21728E3B400A508F4 /* UIKit.framework */; }; 15371F0B1728E3B400A508F4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15371EE21728E3B400A508F4 /* UIKit.framework */; };
15371F0C1728E3B400A508F4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15371EE41728E3B400A508F4 /* Foundation.framework */; }; 15371F0C1728E3B400A508F4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15371EE41728E3B400A508F4 /* Foundation.framework */; };
15371F141728E3B400A508F4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 15371F121728E3B400A508F4 /* InfoPlist.strings */; }; 15371F141728E3B400A508F4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 15371F121728E3B400A508F4 /* InfoPlist.strings */; };
@ -30,12 +29,17 @@
15C9AC1A1895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C9AC191895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m */; }; 15C9AC1A1895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C9AC191895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m */; };
15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C9AC1C1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m */; }; 15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C9AC1C1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m */; };
15CBD67C172A15F900F0C53E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD677172A15F900F0C53E /* HomeViewController.m */; }; 15CBD67C172A15F900F0C53E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD677172A15F900F0C53E /* HomeViewController.m */; };
15CBD67D172A15F900F0C53E /* MenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD679172A15F900F0C53E /* MenuViewController.m */; }; 15CBD67D172A15F900F0C53E /* LeftMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD679172A15F900F0C53E /* LeftMenuViewController.m */; };
15CBD67E172A15F900F0C53E /* ProfileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD67B172A15F900F0C53E /* ProfileViewController.m */; }; 15CBD67E172A15F900F0C53E /* ProfileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD67B172A15F900F0C53E /* ProfileViewController.m */; };
15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD688172A22B700F0C53E /* ProfileDetailViewController.m */; }; 15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD688172A22B700F0C53E /* ProfileDetailViewController.m */; };
15CBD699172A57F100F0C53E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15CBD698172A57F100F0C53E /* QuartzCore.framework */; }; 15CBD699172A57F100F0C53E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15CBD698172A57F100F0C53E /* QuartzCore.framework */; };
15CBD6BE172BBB3600F0C53E /* menu-button@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 15CBD6BD172BBB3600F0C53E /* menu-button@2x.png */; }; 15CBD6BE172BBB3600F0C53E /* menu-button@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 15CBD6BD172BBB3600F0C53E /* menu-button@2x.png */; };
15CBD6C0172BBB7100F0C53E /* menu-button.png in Resources */ = {isa = PBXBuildFile; fileRef = 15CBD6BF172BBB7100F0C53E /* menu-button.png */; }; 15CBD6C0172BBB7100F0C53E /* menu-button.png in Resources */ = {isa = PBXBuildFile; fileRef = 15CBD6BF172BBB7100F0C53E /* menu-button.png */; };
15E7D318190C24E3002EAE3F /* RightMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E7D317190C24E3002EAE3F /* RightMenuViewController.m */; };
15E7D31B190C289E002EAE3F /* animation.png in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D31A190C289E002EAE3F /* animation.png */; };
15E7D31F190C33A5002EAE3F /* leftMenu.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D31D190C33A5002EAE3F /* leftMenu.jpg */; };
15E7D321190C3B75002EAE3F /* rightMenu.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D320190C3B75002EAE3F /* rightMenu.jpg */; };
15E7D327190C3DAE002EAE3F /* gear.png in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D326190C3DAE002EAE3F /* gear.png */; };
997929E2187336AA00716C77 /* FriendsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 997929E1187336AA00716C77 /* FriendsViewController.m */; }; 997929E2187336AA00716C77 /* FriendsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 997929E1187336AA00716C77 /* FriendsViewController.m */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@ -65,8 +69,7 @@
15371EF81728E3B400A508F4 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; }; 15371EF81728E3B400A508F4 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
15371EFB1728E3B400A508F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = "<group>"; }; 15371EFB1728E3B400A508F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = "<group>"; };
15371EFE1728E3B400A508F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = "<group>"; }; 15371EFE1728E3B400A508F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = "<group>"; };
15371F081728E3B400A508F4 /* SlideMenuTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SlideMenuTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; 15371F081728E3B400A508F4 /* SlideMenuTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SlideMenuTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
15371F091728E3B400A508F4 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
15371F111728E3B400A508F4 /* SlideMenuTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SlideMenuTests-Info.plist"; sourceTree = "<group>"; }; 15371F111728E3B400A508F4 /* SlideMenuTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SlideMenuTests-Info.plist"; sourceTree = "<group>"; };
15371F131728E3B400A508F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 15371F131728E3B400A508F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
15371F151728E3B400A508F4 /* SlideMenuTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlideMenuTests.h; sourceTree = "<group>"; }; 15371F151728E3B400A508F4 /* SlideMenuTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlideMenuTests.h; sourceTree = "<group>"; };
@ -86,8 +89,8 @@
15C9AC1E1895A832006E6F27 /* SlideNavigationContorllerAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideNavigationContorllerAnimator.h; sourceTree = "<group>"; }; 15C9AC1E1895A832006E6F27 /* SlideNavigationContorllerAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideNavigationContorllerAnimator.h; sourceTree = "<group>"; };
15CBD676172A15F900F0C53E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; }; 15CBD676172A15F900F0C53E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
15CBD677172A15F900F0C53E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; }; 15CBD677172A15F900F0C53E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
15CBD678172A15F900F0C53E /* MenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuViewController.h; sourceTree = "<group>"; }; 15CBD678172A15F900F0C53E /* LeftMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LeftMenuViewController.h; sourceTree = "<group>"; };
15CBD679172A15F900F0C53E /* MenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuViewController.m; sourceTree = "<group>"; }; 15CBD679172A15F900F0C53E /* LeftMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LeftMenuViewController.m; sourceTree = "<group>"; };
15CBD67A172A15F900F0C53E /* ProfileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileViewController.h; sourceTree = "<group>"; }; 15CBD67A172A15F900F0C53E /* ProfileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileViewController.h; sourceTree = "<group>"; };
15CBD67B172A15F900F0C53E /* ProfileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProfileViewController.m; sourceTree = "<group>"; }; 15CBD67B172A15F900F0C53E /* ProfileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProfileViewController.m; sourceTree = "<group>"; };
15CBD687172A22B600F0C53E /* ProfileDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileDetailViewController.h; sourceTree = "<group>"; }; 15CBD687172A22B600F0C53E /* ProfileDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileDetailViewController.h; sourceTree = "<group>"; };
@ -95,6 +98,12 @@
15CBD698172A57F100F0C53E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 15CBD698172A57F100F0C53E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
15CBD6BD172BBB3600F0C53E /* menu-button@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-button@2x.png"; sourceTree = "<group>"; }; 15CBD6BD172BBB3600F0C53E /* menu-button@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-button@2x.png"; sourceTree = "<group>"; };
15CBD6BF172BBB7100F0C53E /* menu-button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-button.png"; sourceTree = "<group>"; }; 15CBD6BF172BBB7100F0C53E /* menu-button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-button.png"; sourceTree = "<group>"; };
15E7D316190C24E3002EAE3F /* RightMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RightMenuViewController.h; sourceTree = "<group>"; };
15E7D317190C24E3002EAE3F /* RightMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RightMenuViewController.m; sourceTree = "<group>"; };
15E7D31A190C289E002EAE3F /* animation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = animation.png; sourceTree = "<group>"; };
15E7D31D190C33A5002EAE3F /* leftMenu.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = leftMenu.jpg; sourceTree = "<group>"; };
15E7D320190C3B75002EAE3F /* rightMenu.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = rightMenu.jpg; sourceTree = "<group>"; };
15E7D326190C3DAE002EAE3F /* gear.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gear.png; sourceTree = "<group>"; };
997929E0187336AA00716C77 /* FriendsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FriendsViewController.h; sourceTree = "<group>"; }; 997929E0187336AA00716C77 /* FriendsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FriendsViewController.h; sourceTree = "<group>"; };
997929E1187336AA00716C77 /* FriendsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FriendsViewController.m; sourceTree = "<group>"; }; 997929E1187336AA00716C77 /* FriendsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FriendsViewController.m; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@ -115,7 +124,6 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
15371F0A1728E3B400A508F4 /* SenTestingKit.framework in Frameworks */,
15371F0B1728E3B400A508F4 /* UIKit.framework in Frameworks */, 15371F0B1728E3B400A508F4 /* UIKit.framework in Frameworks */,
15371F0C1728E3B400A508F4 /* Foundation.framework in Frameworks */, 15371F0C1728E3B400A508F4 /* Foundation.framework in Frameworks */,
); );
@ -138,7 +146,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
15371EDE1728E3B400A508F4 /* SlideMenu.app */, 15371EDE1728E3B400A508F4 /* SlideMenu.app */,
15371F081728E3B400A508F4 /* SlideMenuTests.octest */, 15371F081728E3B400A508F4 /* SlideMenuTests.xctest */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -150,7 +158,6 @@
15371EE21728E3B400A508F4 /* UIKit.framework */, 15371EE21728E3B400A508F4 /* UIKit.framework */,
15371EE41728E3B400A508F4 /* Foundation.framework */, 15371EE41728E3B400A508F4 /* Foundation.framework */,
15371EE61728E3B400A508F4 /* CoreGraphics.framework */, 15371EE61728E3B400A508F4 /* CoreGraphics.framework */,
15371F091728E3B400A508F4 /* SenTestingKit.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@ -158,6 +165,7 @@
15371EE81728E3B400A508F4 /* SlideMenu */ = { 15371EE81728E3B400A508F4 /* SlideMenu */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
15E7D319190C2894002EAE3F /* Images */,
15CBD675172A15F900F0C53E /* Helper Classes */, 15CBD675172A15F900F0C53E /* Helper Classes */,
15371F241728E43600A508F4 /* Source */, 15371F241728E43600A508F4 /* Source */,
15371EF11728E3B400A508F4 /* AppDelegate.h */, 15371EF11728E3B400A508F4 /* AppDelegate.h */,
@ -234,8 +242,10 @@
15CBD675172A15F900F0C53E /* Helper Classes */ = { 15CBD675172A15F900F0C53E /* Helper Classes */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
15CBD678172A15F900F0C53E /* MenuViewController.h */, 15CBD678172A15F900F0C53E /* LeftMenuViewController.h */,
15CBD679172A15F900F0C53E /* MenuViewController.m */, 15CBD679172A15F900F0C53E /* LeftMenuViewController.m */,
15E7D316190C24E3002EAE3F /* RightMenuViewController.h */,
15E7D317190C24E3002EAE3F /* RightMenuViewController.m */,
15CBD676172A15F900F0C53E /* HomeViewController.h */, 15CBD676172A15F900F0C53E /* HomeViewController.h */,
15CBD677172A15F900F0C53E /* HomeViewController.m */, 15CBD677172A15F900F0C53E /* HomeViewController.m */,
997929E0187336AA00716C77 /* FriendsViewController.h */, 997929E0187336AA00716C77 /* FriendsViewController.h */,
@ -257,6 +267,17 @@
path = Assets; path = Assets;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
15E7D319190C2894002EAE3F /* Images */ = {
isa = PBXGroup;
children = (
15E7D326190C3DAE002EAE3F /* gear.png */,
15E7D320190C3B75002EAE3F /* rightMenu.jpg */,
15E7D31D190C33A5002EAE3F /* leftMenu.jpg */,
15E7D31A190C289E002EAE3F /* animation.png */,
);
path = Images;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@ -293,8 +314,8 @@
); );
name = SlideMenuTests; name = SlideMenuTests;
productName = SlideMenuTests; productName = SlideMenuTests;
productReference = 15371F081728E3B400A508F4 /* SlideMenuTests.octest */; productReference = 15371F081728E3B400A508F4 /* SlideMenuTests.xctest */;
productType = "com.apple.product-type.bundle"; productType = "com.apple.product-type.bundle.unit-test";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
@ -302,6 +323,7 @@
15371ED51728E3B400A508F4 /* Project object */ = { 15371ED51728E3B400A508F4 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastTestingUpgradeCheck = 0600;
LastUpgradeCheck = 0500; LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Aryan Ghassemi"; ORGANIZATIONNAME = "Aryan Ghassemi";
}; };
@ -329,9 +351,13 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
15371EED1728E3B400A508F4 /* InfoPlist.strings in Resources */, 15371EED1728E3B400A508F4 /* InfoPlist.strings in Resources */,
15E7D321190C3B75002EAE3F /* rightMenu.jpg in Resources */,
15E7D327190C3DAE002EAE3F /* gear.png in Resources */,
15371EF51728E3B400A508F4 /* Default.png in Resources */, 15371EF51728E3B400A508F4 /* Default.png in Resources */,
15371EF71728E3B400A508F4 /* Default@2x.png in Resources */, 15371EF71728E3B400A508F4 /* Default@2x.png in Resources */,
15E7D31F190C33A5002EAE3F /* leftMenu.jpg in Resources */,
15371EF91728E3B400A508F4 /* Default-568h@2x.png in Resources */, 15371EF91728E3B400A508F4 /* Default-568h@2x.png in Resources */,
15E7D31B190C289E002EAE3F /* animation.png in Resources */,
15371EFC1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard in Resources */, 15371EFC1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard in Resources */,
15371EFF1728E3B400A508F4 /* MainStoryboard_iPad.storyboard in Resources */, 15371EFF1728E3B400A508F4 /* MainStoryboard_iPad.storyboard in Resources */,
15CBD6BE172BBB3600F0C53E /* menu-button@2x.png in Resources */, 15CBD6BE172BBB3600F0C53E /* menu-button@2x.png in Resources */,
@ -370,6 +396,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
15E7D318190C24E3002EAE3F /* RightMenuViewController.m in Sources */,
15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */, 15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */,
15C9AC171895A7E7006E6F27 /* SlideNavigationContorllerAnimatorSlideAndFade.m in Sources */, 15C9AC171895A7E7006E6F27 /* SlideNavigationContorllerAnimatorSlideAndFade.m in Sources */,
15371EEF1728E3B400A508F4 /* main.m in Sources */, 15371EEF1728E3B400A508F4 /* main.m in Sources */,
@ -379,7 +406,7 @@
15C9AC111895A7BF006E6F27 /* SlideNavigationContorllerAnimatorSlide.m in Sources */, 15C9AC111895A7BF006E6F27 /* SlideNavigationContorllerAnimatorSlide.m in Sources */,
15CBD67C172A15F900F0C53E /* HomeViewController.m in Sources */, 15CBD67C172A15F900F0C53E /* HomeViewController.m in Sources */,
997929E2187336AA00716C77 /* FriendsViewController.m in Sources */, 997929E2187336AA00716C77 /* FriendsViewController.m in Sources */,
15CBD67D172A15F900F0C53E /* MenuViewController.m in Sources */, 15CBD67D172A15F900F0C53E /* LeftMenuViewController.m in Sources */,
15C9AC1A1895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m in Sources */, 15C9AC1A1895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m in Sources */,
15CBD67E172A15F900F0C53E /* ProfileViewController.m in Sources */, 15CBD67E172A15F900F0C53E /* ProfileViewController.m in Sources */,
15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */, 15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */,
@ -498,6 +525,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch"; GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
INFOPLIST_FILE = "SlideMenu/SlideMenu-Info.plist"; INFOPLIST_FILE = "SlideMenu/SlideMenu-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app; WRAPPER_EXTENSION = app;
}; };
@ -509,6 +537,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch"; GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
INFOPLIST_FILE = "SlideMenu/SlideMenu-Info.plist"; INFOPLIST_FILE = "SlideMenu/SlideMenu-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app; WRAPPER_EXTENSION = app;
}; };
@ -521,13 +550,13 @@
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"\"$(SDKROOT)/Developer/Library/Frameworks\"", "\"$(SDKROOT)/Developer/Library/Frameworks\"",
"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
"$(inherited)",
); );
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch"; GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
INFOPLIST_FILE = "SlideMenuTests/SlideMenuTests-Info.plist"; INFOPLIST_FILE = "SlideMenuTests/SlideMenuTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)"; TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = octest;
}; };
name = Debug; name = Debug;
}; };
@ -538,13 +567,13 @@
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"\"$(SDKROOT)/Developer/Library/Frameworks\"", "\"$(SDKROOT)/Developer/Library/Frameworks\"",
"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
"$(inherited)",
); );
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch"; GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
INFOPLIST_FILE = "SlideMenuTests/SlideMenuTests-Info.plist"; INFOPLIST_FILE = "SlideMenuTests/SlideMenuTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)"; TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = octest;
}; };
name = Release; name = Release;
}; };

View File

@ -8,7 +8,8 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "SlideNavigationController.h" #import "SlideNavigationController.h"
#import "MenuViewController.h" #import "LeftMenuViewController.h"
#import "RightMenuViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate> @interface AppDelegate : UIResponder <UIApplicationDelegate>

View File

@ -15,24 +15,43 @@
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
bundle: nil]; bundle: nil];
MenuViewController *rightMenu = (MenuViewController*)[mainStoryboard LeftMenuViewController *leftMenu = (LeftMenuViewController*)[mainStoryboard
instantiateViewControllerWithIdentifier: @"MenuViewController"]; instantiateViewControllerWithIdentifier: @"LeftMenuViewController"];
rightMenu.cellIdentifier = @"rightMenuCell";
MenuViewController *leftMenu = (MenuViewController*)[mainStoryboard RightMenuViewController *rightMenu = (RightMenuViewController*)[mainStoryboard
instantiateViewControllerWithIdentifier: @"MenuViewController"]; instantiateViewControllerWithIdentifier: @"RightMenuViewController"];
leftMenu.cellIdentifier = @"leftMenuCell";
[SlideNavigationController sharedInstance].rightMenu = rightMenu; [SlideNavigationController sharedInstance].rightMenu = rightMenu;
[SlideNavigationController sharedInstance].leftMenu = leftMenu; [SlideNavigationController sharedInstance].leftMenu = leftMenu;
[SlideNavigationController sharedInstance].menuRevealAnimationDuration = .18;
// Creating a custom bar button for right menu // Creating a custom bar button for right menu
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[button setImage:[UIImage imageNamed:@"menu-button"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"gear"] forState:UIControlStateNormal];
[button addTarget:[SlideNavigationController sharedInstance] action:@selector(toggleRightMenu) forControlEvents:UIControlEventTouchUpInside]; [button addTarget:[SlideNavigationController sharedInstance] action:@selector(toggleRightMenu) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[SlideNavigationController sharedInstance].rightBarButtonItem = rightBarButtonItem; [SlideNavigationController sharedInstance].rightBarButtonItem = rightBarButtonItem;
[[NSNotificationCenter defaultCenter] addObserverForName:SlideNavigationControllerDidClose object:nil queue:nil usingBlock:^(NSNotification *note) {
NSString *menu = note.userInfo[@"menu"];
NSLog(@"Closed %@", menu);
}];
[[NSNotificationCenter defaultCenter] addObserverForName:SlideNavigationControllerDidOpen object:nil queue:nil usingBlock:^(NSNotification *note) {
NSString *menu = note.userInfo[@"menu"];
NSLog(@"Opened %@", menu);
}];
[[NSNotificationCenter defaultCenter] addObserverForName:SlideNavigationControllerWillOpen object:nil queue:nil usingBlock:^(NSNotification *note) {
NSString *menu = note.userInfo[@"menu"];
NSLog(@"Opening %@", menu);
}];
[[NSNotificationCenter defaultCenter] addObserverForName:SlideNavigationControllerDidReveal object:nil queue:nil usingBlock:^(NSNotification *note) {
NSString *menu = note.userInfo[@"menu"];
NSLog(@"Revealed %@", menu);
}];
// Override point for customization after application launch. // Override point for customization after application launch.
return YES; return YES;

View File

@ -20,11 +20,6 @@
return YES; return YES;
} }
- (BOOL)slideNavigationControllerShouldDisplayRightMenu
{
return NO;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{ {
return 20; return 20;
@ -33,7 +28,7 @@
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"friendCell"]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"friendCell"];
cell.textLabel.text = [NSString stringWithFormat:@"Friend %d", indexPath.row]; cell.textLabel.text = [NSString stringWithFormat:@"Friend %ld", (long)indexPath.row];
return cell; return cell;
} }

View File

@ -11,4 +11,21 @@
@interface HomeViewController : UIViewController <SlideNavigationControllerDelegate> @interface HomeViewController : UIViewController <SlideNavigationControllerDelegate>
@property (nonatomic, strong) IBOutlet UISwitch *limitPanGestureSwitch;
@property (nonatomic, strong) IBOutlet UISwitch *slideOutAnimationSwitch;
@property (nonatomic, strong) IBOutlet UISwitch *shadowSwitch;
@property (nonatomic, strong) IBOutlet UISwitch *panGestureSwitch;
@property (nonatomic, strong) IBOutlet UISegmentedControl *portraitSlideOffsetSegment;
@property (nonatomic, strong) IBOutlet UISegmentedControl *landscapeSlideOffsetSegment;
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
- (IBAction)bounceMenu:(id)sender;
- (IBAction)slideOutAnimationSwitchChanged:(id)sender;
- (IBAction)limitPanGestureSwitchChanged:(id)sender;
- (IBAction)changeAnimationSelected:(id)sender;
- (IBAction)shadowSwitchSelected:(id)sender;
- (IBAction)enablePanGestureSelected:(id)sender;
- (IBAction)portraitSlideOffsetChanged:(id)sender;
- (IBAction)landscapeSlideOffsetChanged:(id)sender;
@end @end

View File

@ -7,12 +7,21 @@
// //
#import "HomeViewController.h" #import "HomeViewController.h"
#import "LeftMenuViewController.h"
@implementation HomeViewController @implementation HomeViewController
- (void)viewDidLoad - (void)viewDidLoad
{ {
[super viewDidLoad]; [super viewDidLoad];
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 503);
self.portraitSlideOffsetSegment.selectedSegmentIndex = [self indexFromPixels:[SlideNavigationController sharedInstance].portraitSlideOffset];
self.landscapeSlideOffsetSegment.selectedSegmentIndex = [self indexFromPixels:[SlideNavigationController sharedInstance].landscapeSlideOffset];
self.panGestureSwitch.on = [SlideNavigationController sharedInstance].enableSwipeGesture;
self.shadowSwitch.on = [SlideNavigationController sharedInstance].enableShadow;
self.limitPanGestureSwitch.on = ([SlideNavigationController sharedInstance].panGestureSideOffset == 0) ? NO : YES;
self.slideOutAnimationSwitch.on = ((LeftMenuViewController *)[SlideNavigationController sharedInstance].leftMenu).slideOutAnimationEnabled;
} }
#pragma mark - SlideNavigationController Methods - #pragma mark - SlideNavigationController Methods -
@ -27,4 +36,80 @@
return YES; return YES;
} }
#pragma mark - IBActions -
- (IBAction)bounceMenu:(id)sender
{
static Menu menu = MenuLeft;
[[SlideNavigationController sharedInstance] bounceMenu:menu withCompletion:nil];
menu = (menu == MenuLeft) ? MenuRight : MenuLeft;
}
- (IBAction)slideOutAnimationSwitchChanged:(UISwitch *)sender
{
((LeftMenuViewController *)[SlideNavigationController sharedInstance].leftMenu).slideOutAnimationEnabled = sender.isOn;
}
- (IBAction)limitPanGestureSwitchChanged:(UISwitch *)sender
{
[SlideNavigationController sharedInstance].panGestureSideOffset = (sender.isOn) ? 50 : 0;
}
- (IBAction)changeAnimationSelected:(id)sender
{
[[SlideNavigationController sharedInstance] openMenu:MenuRight withCompletion:nil];
}
- (IBAction)shadowSwitchSelected:(UISwitch *)sender
{
[SlideNavigationController sharedInstance].enableShadow = sender.isOn;
}
- (IBAction)enablePanGestureSelected:(UISwitch *)sender
{
[SlideNavigationController sharedInstance].enableSwipeGesture = sender.isOn;
}
- (IBAction)portraitSlideOffsetChanged:(UISegmentedControl *)sender
{
[SlideNavigationController sharedInstance].portraitSlideOffset = [self pixelsFromIndex:sender.selectedSegmentIndex];
}
- (IBAction)landscapeSlideOffsetChanged:(UISegmentedControl *)sender
{
[SlideNavigationController sharedInstance].landscapeSlideOffset = [self pixelsFromIndex:sender.selectedSegmentIndex];
}
#pragma mark - Helpers -
- (NSInteger)indexFromPixels:(NSInteger)pixels
{
if (pixels == 60)
return 0;
else if (pixels == 120)
return 1;
else
return 2;
}
- (NSInteger)pixelsFromIndex:(NSInteger)index
{
switch (index)
{
case 0:
return 60;
case 1:
return 120;
case 2:
return 200;
default:
return 0;
}
}
@end @end

View File

@ -0,0 +1,17 @@
//
// MenuViewController.h
// SlideMenu
//
// Created by Aryan Gh on 4/24/13.
// Copyright (c) 2013 Aryan Ghassemi. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "SlideNavigationController.h"
@interface LeftMenuViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) IBOutlet UITableView *tableView;
@property (nonatomic, assign) BOOL slideOutAnimationEnabled;
@end

View File

@ -0,0 +1,117 @@
//
// MenuViewController.m
// SlideMenu
//
// Created by Aryan Gh on 4/24/13.
// Copyright (c) 2013 Aryan Ghassemi. All rights reserved.
//
#import "LeftMenuViewController.h"
#import "SlideNavigationContorllerAnimatorFade.h"
#import "SlideNavigationContorllerAnimatorSlide.h"
#import "SlideNavigationContorllerAnimatorScale.h"
#import "SlideNavigationContorllerAnimatorScaleAndFade.h"
#import "SlideNavigationContorllerAnimatorSlideAndFade.h"
@implementation LeftMenuViewController
#pragma mark - UIViewController Methods -
- (id)initWithCoder:(NSCoder *)aDecoder
{
self.slideOutAnimationEnabled = YES;
return [super initWithCoder:aDecoder];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.separatorColor = [UIColor lightGrayColor];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"leftMenu.jpg"]];
self.tableView.backgroundView = imageView;
}
#pragma mark - UITableView Delegate & Datasrouce -
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 4;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 20)];
view.backgroundColor = [UIColor clearColor];
return view;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"leftMenuCell"];
switch (indexPath.row)
{
case 0:
cell.textLabel.text = @"Home";
break;
case 1:
cell.textLabel.text = @"Profile";
break;
case 2:
cell.textLabel.text = @"Friends";
break;
case 3:
cell.textLabel.text = @"Sign Out";
break;
}
cell.backgroundColor = [UIColor clearColor];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
bundle: nil];
UIViewController *vc ;
switch (indexPath.row)
{
case 0:
vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"HomeViewController"];
break;
case 1:
vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"ProfileViewController"];
break;
case 2:
vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"FriendsViewController"];
break;
case 3:
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
[[SlideNavigationController sharedInstance] popToRootViewControllerAnimated:YES];
return;
break;
}
[[SlideNavigationController sharedInstance] popToRootAndSwitchToViewController:vc
withSlideOutAnimation:self.slideOutAnimationEnabled
andCompletion:nil];
}
@end

View File

@ -1,16 +0,0 @@
//
// MenuViewController.h
// SlideMenu
//
// Created by Aryan Gh on 4/24/13.
// Copyright (c) 2013 Aryan Ghassemi. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "SlideNavigationController.h"
@interface MenuViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) NSString *cellIdentifier;
@end

View File

@ -1,165 +0,0 @@
//
// MenuViewController.m
// SlideMenu
//
// Created by Aryan Gh on 4/24/13.
// Copyright (c) 2013 Aryan Ghassemi. All rights reserved.
//
#import "MenuViewController.h"
#import "SlideNavigationContorllerAnimatorFade.h"
#import "SlideNavigationContorllerAnimatorSlide.h"
#import "SlideNavigationContorllerAnimatorScale.h"
#import "SlideNavigationContorllerAnimatorScaleAndFade.h"
#import "SlideNavigationContorllerAnimatorSlideAndFade.h"
@implementation MenuViewController
@synthesize cellIdentifier;
#pragma mark - UITableView Delegate & Datasrouce -
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return (section == 0) ? 4 : 6;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return (section == 0) ? @"Navigation" : @"Menu Animation";
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifier];
if (indexPath.section == 0)
{
switch (indexPath.row)
{
case 0:
cell.textLabel.text = @"Home";
break;
case 1:
cell.textLabel.text = @"Profile";
break;
case 2:
cell.textLabel.text = @"Friends";
break;
case 3:
cell.textLabel.text = @"Sign Out";
break;
}
}
else
{
switch (indexPath.row)
{
case 0:
cell.textLabel.text = @"No Animation";
break;
case 1:
cell.textLabel.text = @"Slide Animation";
break;
case 2:
cell.textLabel.text = @"Fade Animation";
break;
case 3:
cell.textLabel.text = @"Slide And Fade Animation";
break;
case 4:
cell.textLabel.text = @"Scale Animation";
break;
case 5:
cell.textLabel.text = @"Scale And Fade Animation";
break;
}
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
bundle: nil];
if (indexPath.section == 0)
{
UIViewController *vc ;
switch (indexPath.row)
{
case 0:
vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"HomeViewController"];
break;
case 1:
vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"ProfileViewController"];
break;
case 2:
vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"FriendsViewController"];
break;
case 3:
[[SlideNavigationController sharedInstance] popToRootViewControllerAnimated:YES];
return;
break;
}
[[SlideNavigationController sharedInstance] switchToViewController:vc withCompletion:nil];
}
else
{
id <SlideNavigationContorllerAnimator> revealAnimator;
switch (indexPath.row)
{
case 0:
revealAnimator = nil;
break;
case 1:
revealAnimator = [[SlideNavigationContorllerAnimatorSlide alloc] init];
break;
case 2:
revealAnimator = [[SlideNavigationContorllerAnimatorFade alloc] init];
break;
case 3:
revealAnimator = [[SlideNavigationContorllerAnimatorSlideAndFade alloc] initWithMaximumFadeAlpha:.7 fadeColor:[UIColor purpleColor] andSlideMovement:100];
break;
case 4:
revealAnimator = [[SlideNavigationContorllerAnimatorScale alloc] init];
break;
case 5:
revealAnimator = [[SlideNavigationContorllerAnimatorScaleAndFade alloc] initWithMaximumFadeAlpha:.6 fadeColor:[UIColor blueColor] andMinimumScale:.7];
break;
default:
return;
}
[[SlideNavigationController sharedInstance] closeMenuWithCompletion:^{
[SlideNavigationController sharedInstance].menuRevealAnimator = revealAnimator;
}];
}
}
@end

View File

@ -0,0 +1,21 @@
//
// RightMenuViewController.h
// SlideMenu
//
// Created by Aryan Gh on 4/26/14.
// Copyright (c) 2014 Aryan Ghassemi. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "SlideNavigationContorllerAnimator.h"
#import "SlideNavigationContorllerAnimatorFade.h"
#import "SlideNavigationContorllerAnimatorSlide.h"
#import "SlideNavigationContorllerAnimatorScale.h"
#import "SlideNavigationContorllerAnimatorScaleAndFade.h"
#import "SlideNavigationContorllerAnimatorSlideAndFade.h"
@interface RightMenuViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) IBOutlet UITableView *tableView;
@end

View File

@ -0,0 +1,127 @@
//
// RightMenuViewController.m
// SlideMenu
//
// Created by Aryan Gh on 4/26/14.
// Copyright (c) 2014 Aryan Ghassemi. All rights reserved.
//
#import "RightMenuViewController.h"
@implementation RightMenuViewController
#pragma mark - UIViewController Methods -
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.separatorColor = [UIColor lightGrayColor];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"rightMenu.jpg"]];
self.tableView.backgroundView = imageView;
}
#pragma mark - UITableView Delegate & Datasrouce -
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 6;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 20)];
view.backgroundColor = [UIColor clearColor];
return view;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"rightMenuCell"];
switch (indexPath.row)
{
case 0:
cell.textLabel.text = @"None";
break;
case 1:
cell.textLabel.text = @"Slide";
break;
case 2:
cell.textLabel.text = @"Fade";
break;
case 3:
cell.textLabel.text = @"Slide And Fade";
break;
case 4:
cell.textLabel.text = @"Scale";
break;
case 5:
cell.textLabel.text = @"Scale And Fade";
break;
}
cell.backgroundColor = [UIColor clearColor];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
id <SlideNavigationContorllerAnimator> revealAnimator;
CGFloat animationDuration = 0;
switch (indexPath.row)
{
case 0:
revealAnimator = nil;
animationDuration = .19;
break;
case 1:
revealAnimator = [[SlideNavigationContorllerAnimatorSlide alloc] init];
animationDuration = .19;
break;
case 2:
revealAnimator = [[SlideNavigationContorllerAnimatorFade alloc] init];
animationDuration = .18;
break;
case 3:
revealAnimator = [[SlideNavigationContorllerAnimatorSlideAndFade alloc] initWithMaximumFadeAlpha:.8 fadeColor:[UIColor blackColor] andSlideMovement:100];
animationDuration = .19;
break;
case 4:
revealAnimator = [[SlideNavigationContorllerAnimatorScale alloc] init];
animationDuration = .22;
break;
case 5:
revealAnimator = [[SlideNavigationContorllerAnimatorScaleAndFade alloc] initWithMaximumFadeAlpha:.6 fadeColor:[UIColor blackColor] andMinimumScale:.8];
animationDuration = .22;
break;
default:
return;
}
[[SlideNavigationController sharedInstance] closeMenuWithCompletion:^{
[SlideNavigationController sharedInstance].menuRevealAnimationDuration = animationDuration;
[SlideNavigationController sharedInstance].menuRevealAnimator = revealAnimator;
}];
}
@end

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
SlideMenu/Images/gear.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

View File

@ -9,7 +9,7 @@
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string> <string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>com.aryaxt.${PRODUCT_NAME:rfc1034identifier}</string> <string>com.aryaxt.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>

View File

@ -33,11 +33,11 @@
- (id)init - (id)init
{ {
if (self = [self initWithSlideMovement:100]) if (self = [self initWithSlideMovement:100])
{ {
} }
return self; return self;
} }
- (id)initWithSlideMovement:(CGFloat)slideMovement - (id)initWithSlideMovement:(CGFloat)slideMovement
@ -55,98 +55,119 @@
- (void)prepareMenuForAnimation:(Menu)menu - (void)prepareMenuForAnimation:(Menu)menu
{ {
UIViewController *menuViewController = (menu == MenuLeft) UIViewController *menuViewController = (menu == MenuLeft)
? [SlideNavigationController sharedInstance].leftMenu ? [SlideNavigationController sharedInstance].leftMenu
: [SlideNavigationController sharedInstance].rightMenu; : [SlideNavigationController sharedInstance].rightMenu;
UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation; UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation;
CGRect rect = menuViewController.view.frame; CGRect rect = menuViewController.view.frame;
if (UIInterfaceOrientationIsLandscape(orientation)) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{ {
if (orientation == UIInterfaceOrientationLandscapeRight) rect.origin.x = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement;
{ }
rect.origin.y = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement; else
} {
else if (UIInterfaceOrientationIsLandscape(orientation))
{ {
rect.origin.y = (menu == MenuRight) ? self.slideMovement*-1 : self.slideMovement; if (orientation == UIInterfaceOrientationLandscapeRight)
} {
} rect.origin.y = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement;
else }
{ else
if (orientation == UIInterfaceOrientationPortrait) {
{ rect.origin.y = (menu == MenuRight) ? self.slideMovement*-1 : self.slideMovement;
rect.origin.x = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement; }
} }
else else
{ {
rect.origin.x = (menu == MenuRight) ? self.slideMovement*-1 : self.slideMovement; if (orientation == UIInterfaceOrientationPortrait)
} {
} rect.origin.x = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement;
}
else
{
rect.origin.x = (menu == MenuRight) ? self.slideMovement*-1 : self.slideMovement;
}
}
}
menuViewController.view.frame = rect; menuViewController.view.frame = rect;
} }
- (void)animateMenu:(Menu)menu withProgress:(CGFloat)progress - (void)animateMenu:(Menu)menu withProgress:(CGFloat)progress
{ {
UIViewController *menuViewController = (menu == MenuLeft) UIViewController *menuViewController = (menu == MenuLeft)
? [SlideNavigationController sharedInstance].leftMenu ? [SlideNavigationController sharedInstance].leftMenu
: [SlideNavigationController sharedInstance].rightMenu; : [SlideNavigationController sharedInstance].rightMenu;
UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation; UIInterfaceOrientation orientation = [SlideNavigationController sharedInstance].interfaceOrientation;
NSInteger location = (menu == MenuLeft) NSInteger location = (menu == MenuLeft)
? (self.slideMovement * -1) + (self.slideMovement * progress) ? (self.slideMovement * -1) + (self.slideMovement * progress)
: (self.slideMovement * (1-progress)); : (self.slideMovement * (1-progress));
if (menu == MenuLeft) if (menu == MenuLeft)
location = (location > 0) ? 0 : location; location = (location > 0) ? 0 : location;
if (menu == MenuRight) if (menu == MenuRight)
location = (location < 0) ? 0 : location; location = (location < 0) ? 0 : location;
CGRect rect = menuViewController.view.frame; CGRect rect = menuViewController.view.frame;
if (UIInterfaceOrientationIsLandscape(orientation)) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{ {
rect.origin.y = (orientation == UIInterfaceOrientationLandscapeRight) ? location : location*-1; rect.origin.x = location;
} }
else else
{ {
rect.origin.x = (orientation == UIInterfaceOrientationPortrait) ? location : location*-1; if (UIInterfaceOrientationIsLandscape(orientation))
} {
rect.origin.y = (orientation == UIInterfaceOrientationLandscapeRight) ? location : location*-1;
}
else
{
rect.origin.x = (orientation == UIInterfaceOrientationPortrait) ? location : location*-1;
}
}
menuViewController.view.frame = rect; menuViewController.view.frame = rect;
} }
- (void)clear - (void)clear
{ {
[self clearMenu:MenuLeft]; [self clearMenu:MenuLeft];
[self clearMenu:MenuRight]; [self clearMenu:MenuRight];
} }
#pragma mark - Private Method - #pragma mark - Private Method -
- (void)clearMenu:(Menu)menu - (void)clearMenu:(Menu)menu
{ {
UIViewController *menuViewController = (menu == MenuLeft) UIViewController *menuViewController = (menu == MenuLeft)
? [SlideNavigationController sharedInstance].leftMenu ? [SlideNavigationController sharedInstance].leftMenu
: [SlideNavigationController sharedInstance].rightMenu; : [SlideNavigationController sharedInstance].rightMenu;
UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation; UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation;
CGRect rect = menuViewController.view.frame; CGRect rect = menuViewController.view.frame;
if (UIInterfaceOrientationIsLandscape(orientation)) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{ {
rect.origin.y = 0; rect.origin.x = 0;
} }
else else
{ {
rect.origin.x = 0; if (UIInterfaceOrientationIsLandscape(orientation))
} {
rect.origin.y = 0;
}
else
{
rect.origin.x = 0;
}
}
menuViewController.view.frame = rect; menuViewController.view.frame = rect;
} }
@end @end

View File

@ -28,6 +28,8 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h> #import <QuartzCore/QuartzCore.h>
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
@protocol SlideNavigationControllerDelegate <NSObject> @protocol SlideNavigationControllerDelegate <NSObject>
@optional @optional
- (BOOL)slideNavigationControllerShouldDisplayRightMenu; - (BOOL)slideNavigationControllerShouldDisplayRightMenu;
@ -35,29 +37,47 @@
@end @end
typedef enum{ typedef enum{
MenuLeft, MenuLeft = 1,
MenuRight, MenuRight = 2
}Menu; }Menu;
@protocol SlideNavigationContorllerAnimator; @protocol SlideNavigationContorllerAnimator;
@interface SlideNavigationController : UINavigationController <UINavigationControllerDelegate> @interface SlideNavigationController : UINavigationController <UINavigationControllerDelegate>
extern NSString * const SlideNavigationControllerDidOpen;
extern NSString *const SlideNavigationControllerDidClose;
extern NSString *const SlideNavigationControllerDidReveal;
extern NSString *const SlideMenuOpenAfterSwipeKey;
@property (nonatomic, assign) BOOL avoidSwitchingToSameClassViewController; @property (nonatomic, assign) BOOL avoidSwitchingToSameClassViewController;
@property (nonatomic, assign) BOOL enableSwipeGesture; @property (nonatomic, assign) BOOL enableSwipeGesture;
@property (nonatomic, assign) BOOL enableShadow;
@property (nonatomic, strong) UIViewController *rightMenu; @property (nonatomic, strong) UIViewController *rightMenu;
@property (nonatomic, strong) UIViewController *leftMenu; @property (nonatomic, strong) UIViewController *leftMenu;
@property (nonatomic, strong) UIBarButtonItem *leftBarButtonItem; @property (nonatomic, strong) UIBarButtonItem *leftBarButtonItem;
@property (nonatomic, strong) UIBarButtonItem *rightBarButtonItem; @property (nonatomic, strong) UIBarButtonItem *rightBarButtonItem;
@property (nonatomic, assign) CGFloat portraitSlideOffset; @property (nonatomic, assign) CGFloat portraitSlideOffset;
@property (nonatomic, assign) CGFloat landscapeSlideOffset; @property (nonatomic, assign) CGFloat landscapeSlideOffset;
@property (nonatomic, assign) CGFloat panGestureSideOffset;
@property (nonatomic, assign) CGFloat menuOpenAnimationDuration;
@property (nonatomic, assign) CGFloat menuCloseAnimationDuration;
@property (nonatomic, assign) UIViewAnimationOptions menuRevealAnimationOption;
@property (nonatomic, strong) id <SlideNavigationContorllerAnimator> menuRevealAnimator; @property (nonatomic, strong) id <SlideNavigationContorllerAnimator> menuRevealAnimator;
+ (SlideNavigationController *)sharedInstance; + (SlideNavigationController *)sharedInstance;
- (void)switchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion; - (void)switchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion __deprecated;
- (void)popToRootAndSwitchToViewController:(UIViewController *)viewController withSlideOutAnimation:(BOOL)slideOutAnimation andCompletion:(void (^)())completion;
- (void)popToRootAndSwitchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion;
- (void)popAllAndSwitchToViewController:(UIViewController *)viewController withSlideOutAnimation:(BOOL)slideOutAnimation andCompletion:(void (^)())completion;
- (void)popAllAndSwitchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion;
- (void)bounceMenu:(Menu)menu withCompletion:(void (^)())completion;
- (void)openMenu:(Menu)menu withCompletion:(void (^)())completion; - (void)openMenu:(Menu)menu withCompletion:(void (^)())completion;
- (void)closeMenuWithCompletion:(void (^)())completion; - (void)closeMenuWithCompletion:(void (^)())completion;
- (void)toggleLeftMenu; - (void)toggleLeftMenu;
- (void)toggleRightMenu; - (void)toggleRightMenu;
- (BOOL)isMenuOpen; - (BOOL)isMenuOpen;
- (void)prepareMenuForReveal:(Menu)menu;
@end @end

View File

@ -28,16 +28,31 @@
#import "SlideNavigationController.h" #import "SlideNavigationController.h"
#import "SlideNavigationContorllerAnimator.h" #import "SlideNavigationContorllerAnimator.h"
@interface SlideNavigationController() typedef enum {
PopTypeAll,
PopTypeRoot
} PopType;
@interface SlideNavigationController() <UIGestureRecognizerDelegate>
@property (nonatomic, strong) UITapGestureRecognizer *tapRecognizer; @property (nonatomic, strong) UITapGestureRecognizer *tapRecognizer;
@property (nonatomic, strong) UIPanGestureRecognizer *panRecognizer; @property (nonatomic, strong) UIPanGestureRecognizer *panRecognizer;
@property (nonatomic, assign) CGPoint draggingPoint; @property (nonatomic, assign) CGPoint draggingPoint;
@property (nonatomic, assign) Menu lastRevealedMenu;
@property (nonatomic, assign) BOOL menuNeedsLayout;
@end @end
@implementation SlideNavigationController @implementation SlideNavigationController
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) NSString * const SlideNavigationControllerDidOpen = @"SlideNavigationControllerDidOpen";
NSString * const SlideNavigationControllerDidClose = @"SlideNavigationControllerDidClose";
NSString *const SlideNavigationControllerDidReveal = @"SlideNavigationControllerDidReveal";
NSString *const SlideMenuOpenAfterSwipeKey = @"SlideMenuOpenAfterSwipeKey";
#define MENU_SLIDE_ANIMATION_DURATION .3 #define MENU_SLIDE_ANIMATION_DURATION .3
#define MENU_SLIDE_OPEN_ANIMATION_DURATION .4
#define MENU_SLIDE_CLOSE_ANIMATION_DURATION .2
#define MENU_SLIDE_ANIMATION_OPTION UIViewAnimationOptionCurveLinear
#define MENU_QUICK_SLIDE_ANIMATION_DURATION .18 #define MENU_QUICK_SLIDE_ANIMATION_DURATION .18
#define MENU_IMAGE @"menu-button" #define MENU_IMAGE @"menu-button"
#define MENU_SHADOW_RADIUS 10 #define MENU_SHADOW_RADIUS 10
@ -45,6 +60,9 @@
#define MENU_DEFAULT_SLIDE_OFFSET 60 #define MENU_DEFAULT_SLIDE_OFFSET 60
#define MENU_FAST_VELOCITY_FOR_SWIPE_FOLLOW_DIRECTION 1200 #define MENU_FAST_VELOCITY_FOR_SWIPE_FOLLOW_DIRECTION 1200
#define STATUS_BAR_HEIGHT 20 #define STATUS_BAR_HEIGHT 20
#define NOTIFICATION_USER_INFO_MENU_LEFT @"left"
#define NOTIFICATION_USER_INFO_MENU_RIGHT @"right"
#define NOTIFICATION_USER_INFO_MENU @"menu"
static SlideNavigationController *singletonInstance; static SlideNavigationController *singletonInstance;
@ -52,6 +70,9 @@ static SlideNavigationController *singletonInstance;
+ (SlideNavigationController *)sharedInstance + (SlideNavigationController *)sharedInstance
{ {
if (!singletonInstance)
NSLog(@"SlideNavigationController has not been initialized. Either place one in your storyboard or initialize one in code");
return singletonInstance; return singletonInstance;
} }
@ -85,67 +106,115 @@ static SlideNavigationController *singletonInstance;
return self; return self;
} }
- (id)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass
{
if (self = [super initWithNavigationBarClass:navigationBarClass toolbarClass:toolbarClass])
{
[self setup];
}
return self;
}
- (void)setup - (void)setup
{ {
if (singletonInstance)
NSLog(@"Singleton instance already exists. You can only instantiate one instance of SlideNavigationController. This could cause major issues");
singletonInstance = self;
self.menuOpenAnimationDuration = MENU_SLIDE_OPEN_ANIMATION_DURATION;
self.menuCloseAnimationDuration = MENU_SLIDE_CLOSE_ANIMATION_DURATION;
self.menuRevealAnimationOption = MENU_SLIDE_ANIMATION_OPTION;
self.landscapeSlideOffset = MENU_DEFAULT_SLIDE_OFFSET; self.landscapeSlideOffset = MENU_DEFAULT_SLIDE_OFFSET;
self.portraitSlideOffset = MENU_DEFAULT_SLIDE_OFFSET; self.portraitSlideOffset = MENU_DEFAULT_SLIDE_OFFSET;
self.panGestureSideOffset = 0;
self.avoidSwitchingToSameClassViewController = YES; self.avoidSwitchingToSameClassViewController = YES;
singletonInstance = self; self.enableShadow = YES;
self.enableSwipeGesture = YES;
self.delegate = self; self.delegate = self;
self.view.layer.shadowColor = [UIColor darkGrayColor].CGColor;
self.view.layer.shadowRadius = MENU_SHADOW_RADIUS;
self.view.layer.shadowOpacity = MENU_SHADOW_OPACITY;
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
self.view.layer.shouldRasterize = YES;
self.view.layer.rasterizationScale = [UIScreen mainScreen].scale;
[self setEnableSwipeGesture:YES];
} }
- (void)viewWillLayoutSubviews - (void)viewWillLayoutSubviews
{ {
[super viewWillLayoutSubviews]; [super viewWillLayoutSubviews];
// Update shadow size // Update shadow size of enabled
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath; if (self.enableShadow)
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
// When menu open we disable user interaction
// When rotates we want to make sure that userInteraction is enabled again
//[self enableTapGestureToCloseMenu:NO];
if (self.menuNeedsLayout)
{
[self updateMenuFrameAndTransformAccordingToOrientation];
// Handle different horizontal/vertical slideOffset during rotation
// On iOS below 8 we just close the menu, iOS8 handles rotation better so we support keepiong the menu open
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0") && [self isMenuOpen])
{
Menu menu = (self.horizontalLocation > 0) ? MenuLeft : MenuRight;
[self openMenu:menu withCompletion:nil];
}
self.menuNeedsLayout = NO;
}
}
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
self.menuNeedsLayout = YES;
} }
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{ {
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
// Avoid an ugnly shadow in background while rotating self.menuNeedsLayout = YES;
self.view.layer.shadowOpacity = 0;
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
// Update rotation animation
[self updateMenuFrameAndTransformAccordingToOrientation];
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
// we set shadowOpacity to 0 in willRotateToInterfaceOrientation, after the rotation we want to add the shadow back
self.view.layer.shadowOpacity = MENU_SHADOW_OPACITY;
}
- (void)updateMenuFrameAndTransformAccordingToOrientation
{
// Animate rotatation when menu is open and device rotates
CGAffineTransform transform = self.view.transform;
self.leftMenu.view.transform = transform;
self.rightMenu.view.transform = transform;
self.leftMenu.view.frame = [self initialRectForMenu];
self.rightMenu.view.frame = [self initialRectForMenu];
} }
#pragma mark - Public Methods - #pragma mark - Public Methods -
- (void)switchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion - (void)bounceMenu:(Menu)menu withCompletion:(void (^)())completion
{
[self prepareMenuForReveal:menu];
NSInteger movementDirection = (menu == MenuLeft) ? 1 : -1;
[UIView animateWithDuration:.16 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
[self moveHorizontallyToLocation:30*movementDirection];
} completion:^(BOOL finished){
[UIView animateWithDuration:.1 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
[self moveHorizontallyToLocation:0];
} completion:^(BOOL finished){
[UIView animateWithDuration:.12 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
[self moveHorizontallyToLocation:16*movementDirection];
} completion:^(BOOL finished){
[UIView animateWithDuration:.08 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
[self moveHorizontallyToLocation:0];
} completion:^(BOOL finished){
[UIView animateWithDuration:.08 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
[self moveHorizontallyToLocation:6*movementDirection];
} completion:^(BOOL finished){
[UIView animateWithDuration:.06 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
[self moveHorizontallyToLocation:0];
} completion:^(BOOL finished){
if (completion)
completion();
}];
}];
}];
}];
}];
}];
}
- (void)switchToViewController:(UIViewController *)viewController
popType:(PopType)poptype
andCompletion:(void (^)())completion
{ {
if (self.avoidSwitchingToSameClassViewController && [self.topViewController isKindOfClass:viewController.class]) if (self.avoidSwitchingToSameClassViewController && [self.topViewController isKindOfClass:viewController.class])
{ {
@ -153,44 +222,86 @@ static SlideNavigationController *singletonInstance;
return; return;
} }
if ([self isMenuOpen]) void (^switchAndCallCompletion)(BOOL) = ^(BOOL closeMenuBeforeCallingCompletion) {
{ if (poptype == PopTypeAll) {
[UIView animateWithDuration:MENU_SLIDE_ANIMATION_DURATION [self setViewControllers:@[viewController]];
delay:0 }
options:UIViewAnimationOptionCurveEaseOut else {
animations:^{ [super popToRootViewControllerAnimated:NO];
CGFloat width = self.horizontalSize; [super pushViewController:viewController animated:NO];
CGFloat moveLocation = (self.horizontalLocation> 0) ? width : -1*width; }
[self moveHorizontallyToLocation:moveLocation];
} completion:^(BOOL finished) {
[super popToRootViewControllerAnimated:NO]; if (closeMenuBeforeCallingCompletion)
[super pushViewController:viewController animated:NO]; {
[self closeMenuWithCompletion:^{
if (completion)
completion();
}];
}
else
{
if (completion)
completion();
}
};
[self closeMenuWithCompletion:^{ // if ([self isMenuOpen])
if (completion) // {
completion(); // if (slideOutAnimation)
}]; // {
}]; // [UIView animateWithDuration:(slideOutAnimation) ? self.menuRevealAnimationDuration : 0
} // delay:0
else // options:self.menuRevealAnimationOption
{ // animations:^{
[super popToRootViewControllerAnimated:NO]; // CGFloat width = self.horizontalSize;
[super pushViewController:viewController animated:YES]; // CGFloat moveLocation = (self.horizontalLocation> 0) ? width : -1*width;
// [self moveHorizontallyToLocation:moveLocation];
// } completion:^(BOOL finished) {
// switchAndCallCompletion(YES);
// }];
// }
// else
// {
// switchAndCallCompletion(YES);
// }
// }
// else
// {
// switchAndCallCompletion(NO);
// }
if (completion) switchAndCallCompletion([self isMenuOpen]);
completion();
}
} }
- (void)closeMenuWithCompletion:(void (^)())completion - (void)switchToViewController:(UIViewController *)viewController withCompletion:(void (^)())completion
{ {
[self closeMenuWithDuration:MENU_SLIDE_ANIMATION_DURATION andCompletion:completion]; [self switchToViewController:viewController popType:PopTypeRoot andCompletion:completion];
} }
- (void)openMenu:(Menu)menu withCompletion:(void (^)())completion - (void)popToRootAndSwitchToViewController:(UIViewController *)viewController
withSlideOutAnimation:(BOOL)slideOutAnimation
andCompletion:(void (^)())completion
{ {
[self openMenu:menu withDuration:MENU_SLIDE_ANIMATION_DURATION andCompletion:completion]; [self switchToViewController:viewController popType:PopTypeRoot andCompletion:completion];
}
- (void)popToRootAndSwitchToViewController:(UIViewController *)viewController
withCompletion:(void (^)())completion
{
[self switchToViewController:viewController popType:PopTypeRoot andCompletion:completion];
}
- (void)popAllAndSwitchToViewController:(UIViewController *)viewController
withSlideOutAnimation:(BOOL)slideOutAnimation
andCompletion:(void (^)())completion
{
[self switchToViewController:viewController popType:PopTypeAll andCompletion:completion];
}
- (void)popAllAndSwitchToViewController:(UIViewController *)viewController
withCompletion:(void (^)())completion
{
[self switchToViewController:viewController popType:PopTypeAll andCompletion:completion];
} }
- (void)toggleLeftMenu - (void)toggleLeftMenu
@ -208,6 +319,26 @@ static SlideNavigationController *singletonInstance;
return (self.horizontalLocation == 0) ? NO : YES; return (self.horizontalLocation == 0) ? NO : YES;
} }
- (void)setEnableShadow:(BOOL)enable
{
_enableShadow = enable;
if (enable)
{
self.view.layer.shadowColor = [UIColor darkGrayColor].CGColor;
self.view.layer.shadowRadius = MENU_SHADOW_RADIUS;
self.view.layer.shadowOpacity = MENU_SHADOW_OPACITY;
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
self.view.layer.shouldRasterize = YES;
self.view.layer.rasterizationScale = [UIScreen mainScreen].scale;
}
else
{
self.view.layer.shadowOpacity = 0;
self.view.layer.shadowRadius = 0;
}
}
#pragma mark - Override Methods - #pragma mark - Override Methods -
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
@ -258,6 +389,37 @@ static SlideNavigationController *singletonInstance;
#pragma mark - Private Methods - #pragma mark - Private Methods -
- (void)updateMenuFrameAndTransformAccordingToOrientation
{
// Animate rotatation when menu is open and device rotates
CGAffineTransform transform = self.view.transform;
self.leftMenu.view.transform = transform;
self.rightMenu.view.transform = transform;
self.leftMenu.view.frame = [self initialRectForMenu];
self.rightMenu.view.frame = [self initialRectForMenu];
}
- (void)enableTapGestureToCloseMenu:(BOOL)enable
{
if (enable)
{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
self.interactivePopGestureRecognizer.enabled = NO;
self.topViewController.view.userInteractionEnabled = NO;
[self.view addGestureRecognizer:self.tapRecognizer];
}
else
{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
self.interactivePopGestureRecognizer.enabled = YES;
self.topViewController.view.userInteractionEnabled = YES;
[self.view removeGestureRecognizer:self.tapRecognizer];
}
}
- (void)toggleMenu:(Menu)menu withCompletion:(void (^)())completion - (void)toggleMenu:(Menu)menu withCompletion:(void (^)())completion
{ {
if ([self isMenuOpen]) if ([self isMenuOpen])
@ -306,15 +468,30 @@ static SlideNavigationController *singletonInstance;
return NO; return NO;
} }
- (void)openMenu:(Menu)menu withDuration:(float)duration andCompletion:(void (^)())completion - (CGFloat)openingPart
{ {
[self.topViewController.view addGestureRecognizer:self.tapRecognizer]; CGFloat slideOffset = self.slideOffset;
CGFloat absHorizontalLocation = (CGFloat)fabs(self.horizontalLocation);
[self prepareMenuForReveal:menu forcePrepare:NO]; return MIN(1.f, absHorizontalLocation/slideOffset);
}
- (void)openMenu:(Menu)menu withCompletion:(void (^)())completion
{
[self openMenu:menu afterSwipe:NO withCompletion:completion];
}
- (void)openMenu:(Menu)menu afterSwipe:(BOOL)afterSwipe withCompletion:(void (^)())completion
{
NSTimeInterval duration = self.menuOpenAnimationDuration * (1.f - [self openingPart]);
[self enableTapGestureToCloseMenu:YES];
[self prepareMenuForReveal:menu];
[UIView animateWithDuration:duration [UIView animateWithDuration:duration
delay:0 delay:0
options:UIViewAnimationOptionCurveEaseOut options:self.menuRevealAnimationOption
animations:^{ animations:^{
CGRect rect = self.view.frame; CGRect rect = self.view.frame;
CGFloat width = self.horizontalSize; CGFloat width = self.horizontalSize;
@ -324,16 +501,24 @@ static SlideNavigationController *singletonInstance;
completion:^(BOOL finished) { completion:^(BOOL finished) {
if (completion) if (completion)
completion(); completion();
[self postNotificationWithName:SlideNavigationControllerDidOpen forMenu:menu withExtParams:@{
SlideMenuOpenAfterSwipeKey : @(afterSwipe)
}];
}]; }];
} }
- (void)closeMenuWithDuration:(float)duration andCompletion:(void (^)())completion - (void)closeMenuWithCompletion:(void (^)())completion
{ {
[self.topViewController.view removeGestureRecognizer:self.tapRecognizer]; NSTimeInterval duration = self.menuCloseAnimationDuration * [self openingPart];
[self enableTapGestureToCloseMenu:NO];
Menu menu = (self.horizontalLocation > 0) ? MenuLeft : MenuRight;
[UIView animateWithDuration:duration [UIView animateWithDuration:duration
delay:0 delay:0
options:UIViewAnimationOptionCurveEaseOut options:self.menuRevealAnimationOption
animations:^{ animations:^{
CGRect rect = self.view.frame; CGRect rect = self.view.frame;
rect.origin.x = 0; rect.origin.x = 0;
@ -342,6 +527,8 @@ static SlideNavigationController *singletonInstance;
completion:^(BOOL finished) { completion:^(BOOL finished) {
if (completion) if (completion)
completion(); completion();
[self postNotificationWithName:SlideNavigationControllerDidClose forMenu:menu];
}]; }];
} }
@ -351,16 +538,28 @@ static SlideNavigationController *singletonInstance;
UIInterfaceOrientation orientation = self.interfaceOrientation; UIInterfaceOrientation orientation = self.interfaceOrientation;
Menu menu = (self.horizontalLocation >= 0 && location >= 0) ? MenuLeft : MenuRight; Menu menu = (self.horizontalLocation >= 0 && location >= 0) ? MenuLeft : MenuRight;
if (UIInterfaceOrientationIsLandscape(orientation)) if ((location > 0 && self.horizontalLocation <= 0) || (location < 0 && self.horizontalLocation >= 0)) {
{ [self postNotificationWithName:SlideNavigationControllerDidReveal forMenu:(location > 0) ? MenuLeft : MenuRight];
rect.origin.x = 0; }
rect.origin.y = (orientation == UIInterfaceOrientationLandscapeRight) ? location : location*-1;
} if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
else {
{ rect.origin.x = location;
rect.origin.x = (orientation == UIInterfaceOrientationPortrait) ? location : location*-1; rect.origin.y = 0;
rect.origin.y = 0; }
} else
{
if (UIInterfaceOrientationIsLandscape(orientation))
{
rect.origin.x = 0;
rect.origin.y = (orientation == UIInterfaceOrientationLandscapeRight) ? location : location*-1;
}
else
{
rect.origin.x = (orientation == UIInterfaceOrientationPortrait) ? location : location*-1;
rect.origin.y = 0;
}
}
self.view.frame = rect; self.view.frame = rect;
[self updateMenuAnimation:menu]; [self updateMenuAnimation:menu];
@ -381,38 +580,37 @@ static SlideNavigationController *singletonInstance;
rect.origin.x = 0; rect.origin.x = 0;
rect.origin.y = 0; rect.origin.y = 0;
BOOL isIos7 = SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"); if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
return rect;
}
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
{ {
if (!isIos7) // For some reasons in landscape below the status bar is considered y=0, but in portrait it's considered y=20
{ rect.origin.x = (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) ? 0 : STATUS_BAR_HEIGHT;
// For some reasons in landscape belos the status bar is considered y=0, but in portrait it's considered y=20 rect.size.width = self.view.frame.size.width-STATUS_BAR_HEIGHT;
rect.origin.x = (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) ? 0 : STATUS_BAR_HEIGHT;
rect.size.width = self.view.frame.size.width-STATUS_BAR_HEIGHT;
}
} }
else else
{ {
if (!isIos7) // For some reasons in landscape below the status bar is considered y=0, but in portrait it's considered y=20
{ rect.origin.y = (self.interfaceOrientation == UIInterfaceOrientationPortrait) ? STATUS_BAR_HEIGHT : 0;
// For some reasons in landscape belos the status bar is considered y=0, but in portrait it's considered y=20 rect.size.height = self.view.frame.size.height-STATUS_BAR_HEIGHT;
rect.origin.y = (self.interfaceOrientation == UIInterfaceOrientationPortrait) ? STATUS_BAR_HEIGHT : 0;
rect.size.height = self.view.frame.size.height-STATUS_BAR_HEIGHT;
}
} }
return rect; return rect;
} }
- (void)prepareMenuForReveal:(Menu)menu forcePrepare:(BOOL)forcePrepare - (void)prepareMenuForReveal:(Menu)menu
{ {
UIViewController *menuViewController = (menu == MenuLeft) ? self.leftMenu : self.rightMenu; // Only prepare menu if it has changed (ex: from MenuLeft to MenuRight or vice versa)
if (self.lastRevealedMenu && menu == self.lastRevealedMenu)
return;
UIViewController *menuViewController = (menu == MenuLeft) ? self.leftMenu : self.rightMenu;
UIViewController *removingMenuViewController = (menu == MenuLeft) ? self.rightMenu : self.leftMenu; UIViewController *removingMenuViewController = (menu == MenuLeft) ? self.rightMenu : self.leftMenu;
// If menu is already open don't prepare, unless forcePrepare is set to true self.lastRevealedMenu = menu;
if ([self isMenuOpen] && !forcePrepare)
return;
[removingMenuViewController.view removeFromSuperview]; [removingMenuViewController.view removeFromSuperview];
[self.view.window insertSubview:menuViewController.view atIndex:0]; [self.view.window insertSubview:menuViewController.view atIndex:0];
@ -427,18 +625,25 @@ static SlideNavigationController *singletonInstance;
CGRect rect = self.view.frame; CGRect rect = self.view.frame;
UIInterfaceOrientation orientation = self.interfaceOrientation; UIInterfaceOrientation orientation = self.interfaceOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{ {
return (orientation == UIInterfaceOrientationLandscapeRight) return rect.origin.x;
? rect.origin.y }
: rect.origin.y*-1; else
} {
else if (UIInterfaceOrientationIsLandscape(orientation))
{ {
return (orientation == UIInterfaceOrientationPortrait) return (orientation == UIInterfaceOrientationLandscapeRight)
? rect.origin.x ? rect.origin.y
: rect.origin.x*-1; : rect.origin.y*-1;
} }
else
{
return (orientation == UIInterfaceOrientationPortrait)
? rect.origin.x
: rect.origin.x*-1;
}
}
} }
- (CGFloat)horizontalSize - (CGFloat)horizontalSize
@ -446,27 +651,36 @@ static SlideNavigationController *singletonInstance;
CGRect rect = self.view.frame; CGRect rect = self.view.frame;
UIInterfaceOrientation orientation = self.interfaceOrientation; UIInterfaceOrientation orientation = self.interfaceOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{ {
return rect.size.height; return rect.size.width;
} }
else else
{ {
return rect.size.width; if (UIInterfaceOrientationIsLandscape(orientation))
} {
return rect.size.height;
}
else
{
return rect.size.width;
}
}
} }
#pragma mark - UINavigationControllerDelegate Methods - - (void)postNotificationWithName:(NSString *)name forMenu:(Menu)menu
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{ {
if ([self shouldDisplayMenu:MenuLeft forViewController:viewController]) [self postNotificationWithName:name forMenu:menu withExtParams:nil];
viewController.navigationItem.leftBarButtonItem = [self barButtonItemForMenu:MenuLeft]; }
if ([self shouldDisplayMenu:MenuRight forViewController:viewController]) - (void)postNotificationWithName:(NSString *)name forMenu:(Menu)menu withExtParams:(NSDictionary *)extParams
viewController.navigationItem.rightBarButtonItem = [self barButtonItemForMenu:MenuRight]; {
NSMutableDictionary *userInfo = extParams ? [extParams mutableCopy] : [NSMutableDictionary dictionary];
NSString *menuString = (menu == MenuLeft) ? NOTIFICATION_USER_INFO_MENU_LEFT : NOTIFICATION_USER_INFO_MENU_RIGHT;
userInfo[NOTIFICATION_USER_INFO_MENU] = menuString;
[[NSNotificationCenter defaultCenter] postNotificationName:name object:nil userInfo:[userInfo copy]];
} }
- (CGFloat)slideOffset - (CGFloat)slideOffset
@ -484,7 +698,6 @@ static SlideNavigationController *singletonInstance;
[self closeMenuWithCompletion:nil]; [self closeMenuWithCompletion:nil];
else else
[self openMenu:MenuLeft withCompletion:nil]; [self openMenu:MenuLeft withCompletion:nil];
} }
- (void)righttMenuSelected:(id)sender - (void)righttMenuSelected:(id)sender
@ -502,41 +715,54 @@ static SlideNavigationController *singletonInstance;
[self closeMenuWithCompletion:nil]; [self closeMenuWithCompletion:nil];
} }
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (self.panGestureSideOffset == 0)
return YES;
CGPoint pointInView = [touch locationInView:self.view];
CGFloat horizontalSize = [self horizontalSize];
return (pointInView.x <= self.panGestureSideOffset || pointInView.x >= horizontalSize - self.panGestureSideOffset)
? YES
: NO;
}
- (void)panDetected:(UIPanGestureRecognizer *)aPanRecognizer - (void)panDetected:(UIPanGestureRecognizer *)aPanRecognizer
{ {
CGPoint translation = [aPanRecognizer translationInView:aPanRecognizer.view]; CGPoint translation = [aPanRecognizer translationInView:aPanRecognizer.view];
CGPoint velocity = [aPanRecognizer velocityInView:aPanRecognizer.view]; CGPoint velocity = [aPanRecognizer velocityInView:aPanRecognizer.view];
NSInteger movement = translation.x - self.draggingPoint.x; NSInteger movement = translation.x - self.draggingPoint.x;
static Menu lastMenu; Menu currentMenu;
Menu menu = (self.horizontalLocation > 0 || (self.horizontalLocation == 0 && movement > 0) ) ? MenuLeft : MenuRight;
if (self.horizontalLocation > 0)
currentMenu = MenuLeft;
else if (self.horizontalLocation < 0)
currentMenu = MenuRight;
else
currentMenu = (translation.x > 0) ? MenuLeft : MenuRight;
// if (![self shouldDisplayMenu:currentMenu forViewController:self.topViewController])
// return;
[self prepareMenuForReveal:currentMenu];
if (aPanRecognizer.state == UIGestureRecognizerStateBegan) if (aPanRecognizer.state == UIGestureRecognizerStateBegan)
{ {
if (![self isMenuOpen])
[self prepareMenuForReveal:menu forcePrepare:YES];
self.draggingPoint = translation; self.draggingPoint = translation;
lastMenu = menu;
} }
else if (aPanRecognizer.state == UIGestureRecognizerStateChanged) else if (aPanRecognizer.state == UIGestureRecognizerStateChanged)
{ {
static CGFloat lastHorizontalLocation = 0; static CGFloat lastHorizontalLocation = 0;
CGFloat newHorizontalLocation = [self horizontalLocation]; CGFloat newHorizontalLocation = [self horizontalLocation];
// Force prepare menu when slides quickly between left and right menu
if (lastMenu != menu)
[self prepareMenuForReveal:menu forcePrepare:YES];
lastHorizontalLocation = newHorizontalLocation; lastHorizontalLocation = newHorizontalLocation;
newHorizontalLocation += movement; newHorizontalLocation += movement;
if (newHorizontalLocation >= self.minXForDragging && newHorizontalLocation <= self.maxXForDragging) if (newHorizontalLocation >= self.minXForDragging && newHorizontalLocation <= self.maxXForDragging)
[self moveHorizontallyToLocation:newHorizontalLocation]; [self moveHorizontallyToLocation:newHorizontalLocation];
self.draggingPoint = translation; self.draggingPoint = translation;
lastMenu = menu;
} }
else if (aPanRecognizer.state == UIGestureRecognizerStateEnded) else if (aPanRecognizer.state == UIGestureRecognizerStateEnded)
{ {
@ -555,11 +781,11 @@ static SlideNavigationController *singletonInstance;
if (currentX > 0) if (currentX > 0)
{ {
if ([self shouldDisplayMenu:menu forViewController:self.visibleViewController]) if ([self shouldDisplayMenu:menu forViewController:self.visibleViewController])
[self openMenu:(velocity.x > 0) ? MenuLeft : MenuRight withDuration:MENU_QUICK_SLIDE_ANIMATION_DURATION andCompletion:nil]; [self openMenu:(velocity.x > 0) ? MenuLeft : MenuRight afterSwipe:YES withCompletion:nil];
} }
else else
{ {
[self closeMenuWithDuration:MENU_QUICK_SLIDE_ANIMATION_DURATION andCompletion:nil]; [self closeMenuWithCompletion:nil];
} }
} }
// Moving Left // Moving Left
@ -567,12 +793,12 @@ static SlideNavigationController *singletonInstance;
{ {
if (currentX > 0) if (currentX > 0)
{ {
[self closeMenuWithDuration:MENU_QUICK_SLIDE_ANIMATION_DURATION andCompletion:nil]; [self closeMenuWithCompletion:nil];
} }
else else
{ {
if ([self shouldDisplayMenu:menu forViewController:self.visibleViewController]) if ([self shouldDisplayMenu:menu forViewController:self.visibleViewController])
[self openMenu:(velocity.x > 0) ? MenuLeft : MenuRight withDuration:MENU_QUICK_SLIDE_ANIMATION_DURATION andCompletion:nil]; [self openMenu:(velocity.x > 0) ? MenuLeft : MenuRight afterSwipe:YES withCompletion:nil];
} }
} }
} }
@ -581,10 +807,8 @@ static SlideNavigationController *singletonInstance;
if (currentXOffset < (self.horizontalSize - self.slideOffset)/2) if (currentXOffset < (self.horizontalSize - self.slideOffset)/2)
[self closeMenuWithCompletion:nil]; [self closeMenuWithCompletion:nil];
else else
[self openMenu:(currentX > 0) ? MenuLeft : MenuRight withCompletion:nil]; [self openMenu:(currentX > 0) ? MenuLeft : MenuRight afterSwipe:YES withCompletion:nil];
} }
lastMenu = -1;
} }
} }
@ -625,6 +849,7 @@ static SlideNavigationController *singletonInstance;
if (!_panRecognizer) if (!_panRecognizer)
{ {
_panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)]; _panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)];
_panRecognizer.delegate = self;
} }
return _panRecognizer; return _panRecognizer;
@ -651,4 +876,18 @@ static SlideNavigationController *singletonInstance;
_menuRevealAnimator = menuRevealAnimator; _menuRevealAnimator = menuRevealAnimator;
} }
- (void)setLeftMenu:(UIViewController *)leftMenu
{
[_leftMenu.view removeFromSuperview];
_leftMenu = leftMenu;
}
- (void)setRightMenu:(UIViewController *)rightMenu
{
[_rightMenu.view removeFromSuperview];
_rightMenu = rightMenu;
}
@end @end

View File

@ -1,476 +1,257 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="13B42" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" initialViewController="Oen-6g-7tl"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="13B42" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" initialViewController="fvh-p2-tUE">
<dependencies> <dependencies>
<deployment defaultVersion="1536" identifier="iOS"/> <deployment defaultVersion="1536" identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3746"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3746"/>
</dependencies> </dependencies>
<scenes> <scenes>
<!--Slide Navigation Controller--> <!--Left Menu View Controller-->
<scene sceneID="soL-QO-MBT"> <scene sceneID="ydh-RY-veO">
<objects> <objects>
<navigationController definesPresentationContext="YES" id="Oen-6g-7tl" customClass="SlideNavigationController" sceneMemberID="viewController"> <viewController storyboardIdentifier="LeftMenuViewController" id="kgk-ix-az4" customClass="LeftMenuViewController" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" id="MdI-RV-rEJ">
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="EpR-BK-Mbw" kind="relationship" relationship="rootViewController" id="fUb-1q-ovb"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="xgA-iB-UP1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="11" y="49"/>
</scene>
<!--Home View Controller - Home-->
<scene sceneID="1iX-uF-XgS">
<objects>
<viewController storyboardIdentifier="HomeViewController" id="WGH-eZ-StC" customClass="HomeViewController" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="9ox-vT-8ZO"/> <viewControllerLayoutGuide type="top" id="Gne-ia-o3b"/>
<viewControllerLayoutGuide type="bottom" id="2jO-Y4-dwb"/> <viewControllerLayoutGuide type="bottom" id="E2D-Nd-pgy"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="ynU-Gi-5gd"> <view key="view" contentMode="scaleToFill" id="M6Q-7c-6B8">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MXr-BW-Kqi"> <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="4iS-Z1-naI">
<rect key="frame" x="75" y="277" width="133" height="30"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<state key="normal" title="Push Another Page">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<segue destination="jPg-od-6hy" kind="push" identifier="NoMenuSegue" id="Gox-yh-ijN"/>
</connections>
</button>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="This is the home Page" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A60-uF-dZB">
<rect key="frame" x="75" y="96" width="170" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" title="Home" id="GMl-s4-jI9"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Vdo-1T-gmW" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1040" y="-222"/>
</scene>
<!--View Controller - No Menu-->
<scene sceneID="1g2-0N-nRw">
<objects>
<viewController id="jPg-od-6hy" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="W0B-Oy-taS"/>
<viewControllerLayoutGuide type="bottom" id="DxN-Jl-NXN"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Z0e-xZ-wJl">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" title="No Menu" id="jBB-nb-laR">
<barButtonItem key="rightBarButtonItem" id="EMZ-nM-HWR">
<segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="BXb-ZQ-V42">
<rect key="frame" x="209" y="6" width="95" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="Seg 1"/>
<segment title="Seg 2"/>
</segments>
</segmentedControl>
</barButtonItem>
</navigationItem>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yHs-hW-a6A" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1503" y="-222"/>
</scene>
<!--View Controller - Login-->
<scene sceneID="iny-R0-OaK">
<objects>
<viewController id="EpR-BK-Mbw" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="WJB-Xl-qD0"/>
<viewControllerLayoutGuide type="bottom" id="IkL-DR-Kgp"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="cnJ-e0-qjC">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Fake Username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="s2k-FM-i8Q">
<rect key="frame" x="37" y="82" width="236" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Fake Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="2Iz-b3-Jah">
<rect key="frame" x="37" y="139" width="236" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RQ1-rt-pLX">
<rect key="frame" x="37" y="200" width="70" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<state key="normal" title="Login">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<segue destination="WGH-eZ-StC" kind="push" id="l6l-PO-aVo"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" title="Login" id="c6J-B1-vra"/>
<connections>
<segue destination="xKj-rc-fXv" kind="push" identifier="FakeSegue" id="YqJ-d4-As6"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="nO1-Ba-P2q" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="499" y="49"/>
</scene>
<!--Profile View Controller - Profile-->
<scene sceneID="eHe-lp-1Yh">
<objects>
<viewController storyboardIdentifier="ProfileViewController" id="xKj-rc-fXv" customClass="ProfileViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="ALS-41-quI"/>
<viewControllerLayoutGuide type="bottom" id="nlf-B7-GLz"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Yqm-91-U9l">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="joy-YF-cCE">
<rect key="frame" x="26" y="321" width="153" height="30"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<state key="normal" title="Push To Another PAge">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<segue destination="ugs-P1-YGh" kind="push" identifier="RightMenuOnlySegue" id="DpK-d9-tzn"/>
</connections>
</button>
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="9ni-yO-Kta">
<rect key="frame" x="26" y="171" width="151" height="29"/>
<segments>
<segment title="Male"/>
<segment title="Female"/>
</segments>
</segmentedControl>
<slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="v2e-ZB-TrT">
<rect key="frame" x="37" y="482" width="216" height="34"/>
</slider>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" title="Profile" id="tCa-1Y-otE"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="nxC-l4-hu3" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1044" y="437"/>
</scene>
<!--Table View Controller-->
<scene sceneID="6dV-69-AZ3">
<objects>
<tableViewController storyboardIdentifier="FriendsViewController" id="xMT-xF-v4r" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="LxD-Ai-YIb">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<sections>
<tableViewSection id="5M8-tr-6jh">
<cells>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="I6Y-nL-yGg">
<rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="I6Y-nL-yGg" id="E8a-tV-o79">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="4cU-pa-2sr">
<rect key="frame" x="0.0" y="44" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4cU-pa-2sr" id="8Cf-Kq-xnG">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="DD5-AF-br7">
<rect key="frame" x="0.0" y="88" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="DD5-AF-br7" id="ILn-31-AJl">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="xMT-xF-v4r" id="XQj-9A-d08"/>
<outlet property="delegate" destination="xMT-xF-v4r" id="SZd-l6-90Y"/>
</connections>
</tableView>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="xQm-un-zeB" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1042" y="1101"/>
</scene>
<!--View Controller - Friend Info-->
<scene sceneID="wnK-2O-3PS">
<objects>
<viewController id="CxZ-W8-bgB" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="WGK-V5-NWe"/>
<viewControllerLayoutGuide type="bottom" id="9d7-3r-Jna"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="GtC-G6-3ja">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Friend Info goes here" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zzd-Jb-BAs">
<rect key="frame" x="107" y="43" width="163" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" title="Friend Info" id="cnM-PC-2Dw"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="mo6-ut-zKZ" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1503" y="1100"/>
</scene>
<!--Menu View Controller-->
<scene sceneID="yoI-WJ-gdb">
<objects>
<viewController storyboardIdentifier="MenuViewController" id="o9W-zC-6w4" customClass="MenuViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="uEG-bJ-crM"/>
<viewControllerLayoutGuide type="bottom" id="x2Q-jd-wxJ"/>
</layoutGuides>
<view key="view" clipsSubviews="YES" contentMode="scaleToFill" id="TFO-hf-gVR">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="DGo-c5-EQy">
<rect key="frame" x="0.0" y="0.0" width="768" height="1033"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="rightMenuCell" textLabel="lXy-7d-Ht3" style="IBUITableViewCellStyleDefault" id="YKA-M5-gZx">
<rect key="frame" x="0.0" y="22" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="YKA-M5-gZx" id="gPK-3I-WDd">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="lXy-7d-Ht3">
<rect key="frame" x="15" y="0.0" width="738" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="leftMenuCell" textLabel="vz5-1Q-gb9" style="IBUITableViewCellStyleDefault" id="Luj-u7-9bo">
<rect key="frame" x="0.0" y="66" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Luj-u7-9bo" id="0Fn-gV-U9K">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vz5-1Q-gb9">
<rect key="frame" x="15" y="0.0" width="738" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<sections/>
<connections>
<outlet property="dataSource" destination="o9W-zC-6w4" id="LaL-n6-aMK"/>
<outlet property="delegate" destination="o9W-zC-6w4" id="QSO-Zi-ko9"/>
</connections>
</tableView>
</subviews>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="bP0-Cd-8KS" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-508" y="63"/>
</scene>
<!--Profile Detail View Controller - Right Menu Only-->
<scene sceneID="gfV-vb-ae7">
<objects>
<viewController storyboardIdentifier="ProfileDetailViewController" id="ugs-P1-YGh" customClass="ProfileDetailViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="VlI-oA-PTb"/>
<viewControllerLayoutGuide type="bottom" id="1Fs-SP-rL1"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="oOB-Dx-UbF">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" title="Right Menu Only" id="Kog-bv-KLN"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="p0T-5W-Mx2" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1503" y="437"/>
</scene>
<!--Menu View Controller-->
<scene sceneID="Ome-0r-1Qu">
<objects>
<viewController storyboardIdentifier="MenuViewController" id="13t-T3-CP0" customClass="MenuViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="6nY-Av-dcI"/>
<viewControllerLayoutGuide type="bottom" id="fvQ-4G-dV3"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="zX2-AD-7hr">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="yzu-GH-UWw">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="insetFor6xAndEarlier" minX="0.0" minY="20" maxX="0.0" maxY="0.0"/>
<prototypes> <prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="rightMenuCell" textLabel="88c-Nm-csG" style="IBUITableViewCellStyleDefault" id="T4P-QU-3rZ"> <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="leftMenuCell" textLabel="EoR-3O-t6M" style="IBUITableViewCellStyleDefault" id="dX0-0J-330">
<rect key="frame" x="0.0" y="22" width="768" height="44"/> <rect key="frame" x="0.0" y="22" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="T4P-QU-3rZ" id="yab-vC-ifj"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="dX0-0J-330" id="ypG-Nr-fsT">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/> <rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="88c-Nm-csG"> <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="EoR-3O-t6M">
<rect key="frame" x="15" y="0.0" width="738" height="43"/> <rect key="frame" x="15" y="0.0" width="738" height="43"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/> <fontDescription key="fontDescription" name="Georgia-Bold" family="Georgia" pointSize="16"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/> <color key="highlightedColor" red="0.0039215688589999999" green="0.29803922770000002" blue="0.39607846740000002" alpha="1" colorSpace="deviceRGB"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="leftMenuCell" textLabel="zZK-8n-NHZ" style="IBUITableViewCellStyleDefault" id="Oei-on-CtK">
<rect key="frame" x="0.0" y="66" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Oei-on-CtK" id="9RC-LV-glL">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="zZK-8n-NHZ">
<rect key="frame" x="15" y="0.0" width="738" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</label> </label>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
<inset key="separatorInset" minX="15" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell> </tableViewCell>
</prototypes> </prototypes>
<sections/> <sections/>
<connections> <connections>
<outlet property="dataSource" destination="13t-T3-CP0" id="Gup-GY-FX6"/> <outlet property="dataSource" destination="kgk-ix-az4" id="KPu-Yn-RVq"/>
<outlet property="delegate" destination="13t-T3-CP0" id="tSy-QF-Ras"/> <outlet property="delegate" destination="kgk-ix-az4" id="Q2S-FC-4x0"/>
</connections> </connections>
</tableView> </tableView>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<connections>
<outlet property="tableView" destination="4iS-Z1-naI" id="wIU-s8-EUP"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="zvA-yA-XX6" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="MPB-tk-CfT" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="-497" y="147"/> <point key="canvasLocation" x="-463" y="-315"/>
</scene> </scene>
<!--Slide Navigation Controller--> <!--Slide Navigation Controller-->
<scene sceneID="dVS-E2-Auy"> <scene sceneID="ai6-Og-ggg">
<objects> <objects>
<navigationController definesPresentationContext="YES" id="b3D-cb-lLJ" customClass="SlideNavigationController" sceneMemberID="viewController"> <navigationController definesPresentationContext="YES" id="fvh-p2-tUE" customClass="SlideNavigationController" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" id="9AS-bj-VL4"> <navigationBar key="navigationBar" contentMode="scaleToFill" id="s4t-1u-9Dt">
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</navigationBar> </navigationBar>
<connections> <connections>
<segue destination="a5s-P3-RMU" kind="relationship" relationship="rootViewController" id="9bb-Cg-obU"/> <segue destination="WYD-AW-Tad" kind="relationship" relationship="rootViewController" id="ZlM-E3-32S"/>
</connections> </connections>
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Syh-FB-lWu" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="ZVX-Wl-Kro" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="11" y="49"/> <point key="canvasLocation" x="11" y="49"/>
</scene> </scene>
<!--Home View Controller - Home--> <!--Home View Controller - Home-->
<scene sceneID="WEc-Rd-kK2"> <scene sceneID="jok-Y9-nsU">
<objects> <objects>
<viewController storyboardIdentifier="HomeViewController" id="rkh-dZ-TLU" customClass="HomeViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="HomeViewController" id="V7R-1j-qkE" customClass="HomeViewController" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="qkm-Wn-vtw"/> <viewControllerLayoutGuide type="top" id="4h0-Bw-69Q"/>
<viewControllerLayoutGuide type="bottom" id="oEO-Ia-AP9"/> <viewControllerLayoutGuide type="bottom" id="XXp-Rh-R4b"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="weu-6i-cnt"> <view key="view" contentMode="scaleToFill" id="htL-MX-nZg">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hlm-5i-YGh"> <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bn4-DT-fWK">
<rect key="frame" x="75" y="277" width="133" height="30"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<state key="normal" title="Push Another Page"> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> <subviews>
</state> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YJC-mw-uA1">
<connections> <rect key="frame" x="3" y="14" width="76" height="30"/>
<segue destination="QLX-M1-3U4" kind="push" identifier="NoMenuSegue" id="Zvw-UE-EYe"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</connections> <state key="normal" title="Push">
</button> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="This is the home Page" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OWm-Zb-rgF"> </state>
<rect key="frame" x="75" y="96" width="170" height="21"/> <connections>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <segue destination="4Fv-uA-OED" kind="push" id="iN9-Ny-5e8"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/> </connections>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/> </button>
<nil key="highlightedColor"/> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Slide out animation during switch" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="BGW-VE-r3c">
</label> <rect key="frame" x="14" y="64" width="150" height="51"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xi7-6L-7LP">
<rect key="frame" x="675" y="14" width="89" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Bounce Me">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="bounceMenu:" destination="V7R-1j-qkE" eventType="touchUpInside" id="AYn-Cd-Qms"/>
</connections>
</button>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="K17-M3-fdi">
<rect key="frame" x="671" y="74" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="slideOutAnimationSwitchChanged:" destination="V7R-1j-qkE" eventType="valueChanged" id="mPq-Ey-Wdr"/>
</connections>
</switch>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Limit swipe gesture to sides" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="Nud-ee-xnr">
<rect key="frame" x="14" y="238" width="150" height="51"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="JE0-yY-a3F">
<rect key="frame" x="671" y="248" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="limitPanGestureSwitchChanged:" destination="V7R-1j-qkE" eventType="valueChanged" id="Fhj-16-CRo"/>
</connections>
</switch>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xSS-jz-TCM">
<rect key="frame" x="287" y="14" width="141" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Change Animation">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="changeAnimationSelected:" destination="V7R-1j-qkE" eventType="touchUpInside" id="Xka-WC-m6i"/>
</connections>
</button>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Shadow" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="3EQ-6K-9U6">
<rect key="frame" x="14" y="130" width="150" height="38"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Drh-pH-upM">
<rect key="frame" x="671" y="131" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="shadowSwitchSelected:" destination="V7R-1j-qkE" eventType="valueChanged" id="DT2-s9-ln1"/>
</connections>
</switch>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Swipe Gesture" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="q9w-JO-G4u">
<rect key="frame" x="14" y="184" width="150" height="38"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="dCe-up-lMi">
<rect key="frame" x="671" y="187" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="enablePanGestureSelected:" destination="V7R-1j-qkE" eventType="valueChanged" id="af0-3l-eWL"/>
</connections>
</switch>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Portrait slide offset" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="trx-fk-BuJ">
<rect key="frame" x="9" y="303" width="150" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="qmn-1J-Alb">
<rect key="frame" x="221" y="344" width="301" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="60 pixels"/>
<segment title="120 pixels"/>
<segment title="200 pixels"/>
</segments>
<connections>
<action selector="portraitSlideOffsetChanged:" destination="V7R-1j-qkE" eventType="valueChanged" id="21Z-jo-Gba"/>
</connections>
</segmentedControl>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Landscape slide offset" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="203" translatesAutoresizingMaskIntoConstraints="NO" id="6aZ-Gf-WRx">
<rect key="frame" x="9" y="379" width="203" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="PTv-Ml-qnn">
<rect key="frame" x="221" y="421" width="301" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="60 pixels"/>
<segment title="120 pixels"/>
<segment title="200 pixels"/>
</segments>
<connections>
<action selector="landscapeSlideOffsetChanged:" destination="V7R-1j-qkE" eventType="valueChanged" id="3xw-Wg-hC0"/>
</connections>
</segmentedControl>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</scrollView>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="Home" id="aLa-44-JvR"/> <navigationItem key="navigationItem" title="Home" id="DIi-Oq-839"/>
<connections>
<outlet property="landscapeSlideOffsetSegment" destination="PTv-Ml-qnn" id="jEx-Gi-nSR"/>
<outlet property="limitPanGestureSwitch" destination="JE0-yY-a3F" id="AbJ-cJ-5yT"/>
<outlet property="panGestureSwitch" destination="dCe-up-lMi" id="hBX-fq-WuG"/>
<outlet property="portraitSlideOffsetSegment" destination="qmn-1J-Alb" id="Rs5-ve-XJQ"/>
<outlet property="scrollView" destination="bn4-DT-fWK" id="MuQ-al-NSa"/>
<outlet property="shadowSwitch" destination="Drh-pH-upM" id="tYN-aW-vSs"/>
<outlet property="slideOutAnimationSwitch" destination="K17-M3-fdi" id="lGb-Wv-cE6"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="rIe-K4-ewn" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="Ti6-YK-HS7" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1040" y="-222"/> <point key="canvasLocation" x="1040" y="-222"/>
</scene> </scene>
<!--View Controller - No Menu--> <!--View Controller - No Menu-->
<scene sceneID="D7t-tx-sIN"> <scene sceneID="vPh-ap-UX3">
<objects> <objects>
<viewController id="QLX-M1-3U4" sceneMemberID="viewController"> <viewController id="4Fv-uA-OED" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="kRH-2C-Kwt"/> <viewControllerLayoutGuide type="top" id="pmx-IK-i2u"/>
<viewControllerLayoutGuide type="bottom" id="bfU-Nh-ees"/> <viewControllerLayoutGuide type="bottom" id="cGA-iU-ukc"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="scb-5E-h8W"> <view key="view" contentMode="scaleToFill" id="rRI-CF-NSd">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="No Menu" id="Xia-55-WbU"> <navigationItem key="navigationItem" title="No Menu" id="vf8-FK-eVo">
<barButtonItem key="rightBarButtonItem" id="8HJ-zX-KqP"> <barButtonItem key="rightBarButtonItem" id="wha-vg-KIJ">
<segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="71c-sD-0YC"> <segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="NPp-E6-6Ki">
<rect key="frame" x="209" y="6" width="95" height="32"/> <rect key="frame" x="209" y="8" width="95" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments> <segments>
<segment title="Seg 1"/> <segment title="Seg 1"/>
@ -480,113 +261,116 @@
</barButtonItem> </barButtonItem>
</navigationItem> </navigationItem>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="cb1-Kh-9v5" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="4or-Zf-ZK4" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1503" y="-222"/> <point key="canvasLocation" x="1503" y="-222"/>
</scene> </scene>
<!--View Controller - Login--> <!--View Controller - Login-->
<scene sceneID="fwq-Od-Rmh"> <scene sceneID="6xM-VD-IjZ">
<objects> <objects>
<viewController id="a5s-P3-RMU" sceneMemberID="viewController"> <viewController id="WYD-AW-Tad" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="ho4-yJ-Gjb"/> <viewControllerLayoutGuide type="top" id="iw1-SG-CVt"/>
<viewControllerLayoutGuide type="bottom" id="82I-OL-Cak"/> <viewControllerLayoutGuide type="bottom" id="r3s-gZ-c3b"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="HGM-Fu-OcM"> <view key="view" contentMode="scaleToFill" id="9Q5-n4-47C">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Fake Username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="vNU-hj-tdS"> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Fake Username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="YBV-ip-gT9">
<rect key="frame" x="37" y="82" width="236" height="30"/> <rect key="frame" x="37" y="82" width="236" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/> <fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/> <textInputTraits key="textInputTraits"/>
</textField> </textField>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Fake Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="DmU-Nr-Jd5"> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Fake Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Ee7-zg-0Cb">
<rect key="frame" x="37" y="139" width="236" height="30"/> <rect key="frame" x="37" y="139" width="236" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/> <fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/> <textInputTraits key="textInputTraits"/>
</textField> </textField>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yKh-lx-6VN"> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FDT-CQ-1Pc">
<rect key="frame" x="37" y="200" width="70" height="30"/> <rect key="frame" x="37" y="200" width="70" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Login"> <state key="normal" title="Login">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state> </state>
<connections> <connections>
<segue destination="rkh-dZ-TLU" kind="push" id="Of3-Mq-l1H"/> <segue destination="V7R-1j-qkE" kind="push" id="gTa-tR-axC"/>
</connections> </connections>
</button> </button>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="Login" id="abg-kd-gNg"/> <navigationItem key="navigationItem" title="Login" id="eie-6f-3Sp"/>
<connections> <connections>
<segue destination="4Of-A0-9eP" kind="push" identifier="FakeSegue" id="1YA-Y6-mjJ"/> <segue destination="7sy-BR-PJy" kind="push" identifier="FakeSegue" id="NSn-aH-3F1"/>
</connections> </connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="WQ4-NV-NUE" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="TnG-uB-kKy" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="499" y="49"/> <point key="canvasLocation" x="499" y="49"/>
</scene> </scene>
<!--Profile View Controller - Profile--> <!--Profile View Controller - Profile-->
<scene sceneID="AWW-D1-CVj"> <scene sceneID="vdg-mb-ElN">
<objects> <objects>
<viewController storyboardIdentifier="ProfileViewController" id="4Of-A0-9eP" customClass="ProfileViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="ProfileViewController" id="7sy-BR-PJy" customClass="ProfileViewController" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="Ynr-6t-ms6"/> <viewControllerLayoutGuide type="top" id="VZj-K9-2cU"/>
<viewControllerLayoutGuide type="bottom" id="EJ5-Dd-vmM"/> <viewControllerLayoutGuide type="bottom" id="rY3-Co-AMw"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="I3b-E3-UQt"> <view key="view" contentMode="scaleToFill" id="5pS-iy-m6Z">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lCj-OK-Eoc"> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Rck-5P-us4">
<rect key="frame" x="26" y="321" width="153" height="30"/> <rect key="frame" x="92" y="178" width="153" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Push To Another PAge"> <state key="normal" title="Push To Another PAge">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state> </state>
<connections> <connections>
<segue destination="9qP-Rw-akW" kind="push" identifier="RightMenuOnlySegue" id="Dvy-v5-WDf"/> <segue destination="QUW-hd-dmf" kind="push" identifier="RightMenuOnlySegue" id="GjH-qI-P13"/>
</connections> </connections>
</button> </button>
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="zQY-W8-4vS"> <segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="oRi-zj-G0a">
<rect key="frame" x="26" y="171" width="151" height="29"/> <rect key="frame" x="85" y="111" width="151" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments> <segments>
<segment title="Male"/> <segment title="random"/>
<segment title="Female"/> <segment title="?"/>
</segments> </segments>
</segmentedControl> </segmentedControl>
<slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="KFp-Fv-Fpi"> <slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="ZK1-N5-ujV">
<rect key="frame" x="37" y="482" width="216" height="34"/> <rect key="frame" x="37" y="260" width="216" height="34"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</slider> </slider>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="Profile" id="kLC-3K-WHD"/> <navigationItem key="navigationItem" title="Profile" id="rim-Qb-Z9f"/>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="c0q-35-UFx" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="B48-94-l8v" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1044" y="437"/> <point key="canvasLocation" x="1044" y="437"/>
</scene> </scene>
<!--Friends View Controller--> <!--Friends View Controller - Friends-->
<scene sceneID="Lvi-cl-Er6"> <scene sceneID="nFD-Fx-IfT">
<objects> <objects>
<tableViewController storyboardIdentifier="FriendsViewController" id="rvx-wK-8R4" customClass="FriendsViewController" sceneMemberID="viewController"> <tableViewController storyboardIdentifier="FriendsViewController" title="Friends" id="02e-ia-H3p" customClass="FriendsViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="Gqb-f5-gmd"> <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="mf9-Md-XTT">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<prototypes> <prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="friendCell" textLabel="gYr-jd-ghO" style="IBUITableViewCellStyleDefault" id="VUV-vl-NHC"> <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="friendCell" textLabel="mHc-QQ-efC" style="IBUITableViewCellStyleDefault" id="xWi-Fb-kBs">
<rect key="frame" x="0.0" y="22" width="768" height="44"/> <rect key="frame" x="0.0" y="86" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VUV-vl-NHC" id="KDW-RI-DSs"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="xWi-Fb-kBs" id="AiF-6v-P9b">
<rect key="frame" x="0.0" y="0.0" width="735" height="43"/> <rect key="frame" x="0.0" y="0.0" width="735" height="43"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="gYr-jd-ghO"> <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="mHc-QQ-efC">
<rect key="frame" x="15" y="0.0" width="718" height="43"/> <rect key="frame" x="15" y="0.0" width="718" height="43"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="system" pointSize="18"/> <fontDescription key="fontDescription" type="system" pointSize="18"/>
@ -596,34 +380,35 @@
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
<connections> <connections>
<segue destination="J3s-bt-BQI" kind="push" id="Z7w-3t-Oem"/> <segue destination="ib7-4p-iWa" kind="push" id="pcr-1g-E2h"/>
</connections> </connections>
</tableViewCell> </tableViewCell>
</prototypes> </prototypes>
<sections/> <sections/>
<connections> <connections>
<outlet property="dataSource" destination="rvx-wK-8R4" id="SYf-Ty-RO1"/> <outlet property="dataSource" destination="02e-ia-H3p" id="tRf-va-vVe"/>
<outlet property="delegate" destination="rvx-wK-8R4" id="OsZ-U9-TTD"/> <outlet property="delegate" destination="02e-ia-H3p" id="3Bt-bh-0FR"/>
</connections> </connections>
</tableView> </tableView>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
</tableViewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="fez-3Q-0T6" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="biJ-dS-Jqa" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1042" y="1101"/> <point key="canvasLocation" x="1042" y="1101"/>
</scene> </scene>
<!--View Controller - Friend Info--> <!--View Controller - Friends-->
<scene sceneID="QjK-zE-zoe"> <scene sceneID="O22-q0-G0O">
<objects> <objects>
<viewController id="J3s-bt-BQI" sceneMemberID="viewController"> <viewController title="Friends" id="ib7-4p-iWa" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="CQC-GI-Vmb"/> <viewControllerLayoutGuide type="top" id="PUj-JX-Dzd"/>
<viewControllerLayoutGuide type="bottom" id="HB6-Zz-68j"/> <viewControllerLayoutGuide type="bottom" id="aX0-ol-52a"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="qot-Aw-azW"> <view key="view" contentMode="scaleToFill" id="NwL-Q3-bld">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Friend Info goes here" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jLf-zC-MZD"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Friend Info goes here" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6pu-bb-UuH">
<rect key="frame" x="107" y="43" width="163" height="21"/> <rect key="frame" x="107" y="43" width="163" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/> <fontDescription key="fontDescription" type="system" pointSize="17"/>
@ -633,31 +418,87 @@
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="Friend Info" id="3p4-7R-M9l"/> <navigationItem key="navigationItem" title="Friend Info" id="87E-5u-pRC"/>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="w8C-R5-bRD" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="OO8-ID-dwE" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1503" y="1100"/> <point key="canvasLocation" x="1503" y="1100"/>
</scene> </scene>
<!--Profile Detail View Controller - Right Menu Only--> <!--Profile Detail View Controller - Right Menu Only-->
<scene sceneID="slh-EU-zMF"> <scene sceneID="rfM-Ud-q6T">
<objects> <objects>
<viewController storyboardIdentifier="ProfileDetailViewController" id="9qP-Rw-akW" customClass="ProfileDetailViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="ProfileDetailViewController" id="QUW-hd-dmf" customClass="ProfileDetailViewController" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="vOS-Ms-0qV"/> <viewControllerLayoutGuide type="top" id="Cih-DQ-MER"/>
<viewControllerLayoutGuide type="bottom" id="zbH-W7-ltS"/> <viewControllerLayoutGuide type="bottom" id="fhz-Is-192"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="RyG-iM-xow"> <view key="view" contentMode="scaleToFill" id="uIL-wB-Qgi">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/> <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="Right Menu Only" id="L0A-q9-5dN"/> <navigationItem key="navigationItem" title="Right Menu Only" id="DCN-Kk-ZXw"/>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="jjH-KD-Njc" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="tHH-ZU-dK5" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1503" y="437"/> <point key="canvasLocation" x="1503" y="437"/>
</scene> </scene>
<!--Right Menu View Controller-->
<scene sceneID="BnH-4A-xKd">
<objects>
<viewController storyboardIdentifier="RightMenuViewController" id="s8Z-d6-pPO" customClass="RightMenuViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="4FB-gt-Glo"/>
<viewControllerLayoutGuide type="bottom" id="uy1-kw-buA"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="LxO-RZ-XYJ">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="WhB-Xa-VUc">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="insetFor6xAndEarlier" minX="0.0" minY="20" maxX="0.0" maxY="0.0"/>
<color key="sectionIndexTrackingBackgroundColor" red="0.83529418710000003" green="0.77647066119999997" blue="0.9450981021" alpha="1" colorSpace="deviceRGB"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="rightMenuCell" textLabel="TLA-lN-Jhv" style="IBUITableViewCellStyleDefault" id="QhH-j0-Isk">
<rect key="frame" x="0.0" y="22" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="QhH-j0-Isk" id="2zc-I9-pbt">
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="TLA-lN-Jhv">
<rect key="frame" x="15" y="0.0" width="738" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" name="Georgia-Bold" family="Georgia" pointSize="16"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" red="0.0039215688589999999" green="0.29803922770000002" blue="0.39607846740000002" alpha="1" colorSpace="deviceRGB"/>
</label>
</subviews>
</tableViewCellContentView>
<inset key="separatorInset" minX="15" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
</prototypes>
<sections/>
<connections>
<outlet property="dataSource" destination="s8Z-d6-pPO" id="puK-Mm-G9d"/>
<outlet property="delegate" destination="s8Z-d6-pPO" id="xLR-zN-vmb"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<connections>
<outlet property="tableView" destination="WhB-Xa-VUc" id="YeN-Ln-HCq"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="eku-Gd-3ad" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-458" y="371"/>
</scene>
</scenes> </scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics"> <simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/> <simulatedStatusBarMetrics key="statusBar"/>

283
SlideMenu/en.lproj/MainStoryboard_iPhone.storyboard Executable file → Normal file
View File

@ -1,44 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="13B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="yzD-f0-X8n"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6250" systemVersion="14B25" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="yzD-f0-X8n">
<dependencies> <dependencies>
<deployment defaultVersion="1536" identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3746"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
</dependencies> </dependencies>
<scenes> <scenes>
<!--Menu View Controller--> <!--Left Menu View Controller-->
<scene sceneID="BMU-5d-Lvz"> <scene sceneID="BMU-5d-Lvz">
<objects> <objects>
<viewController storyboardIdentifier="MenuViewController" id="L46-bH-G45" customClass="MenuViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="LeftMenuViewController" id="L46-bH-G45" customClass="LeftMenuViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="1Ck-cx-0Lt"> <view key="view" contentMode="scaleToFill" id="1Ck-cx-0Lt">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="T7T-Ke-Ksy"> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="T7T-Ke-Ksy">
<rect key="frame" x="0.0" y="20" width="320" height="548"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="insetFor6xAndEarlier" minX="0.0" minY="20" maxX="0.0" maxY="0.0"/> <inset key="insetFor6xAndEarlier" minX="0.0" minY="20" maxX="0.0" maxY="0.0"/>
<prototypes> <prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="rightMenuCell" textLabel="69X-Zn-twq" style="IBUITableViewCellStyleDefault" id="Pb7-aS-2IS">
<rect key="frame" x="0.0" y="22" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Pb7-aS-2IS" id="ZTi-GL-tac">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="69X-Zn-twq">
<rect key="frame" x="15" y="0.0" width="290" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</label>
</subviews>
</tableViewCellContentView>
<inset key="separatorInset" minX="15" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="leftMenuCell" textLabel="nmX-lO-eSN" style="IBUITableViewCellStyleDefault" id="cLE-GR-3Mi"> <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="leftMenuCell" textLabel="nmX-lO-eSN" style="IBUITableViewCellStyleDefault" id="cLE-GR-3Mi">
<rect key="frame" x="0.0" y="66" width="320" height="44"/> <rect key="frame" x="0.0" y="22" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="cLE-GR-3Mi" id="mlz-xO-oOg"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="cLE-GR-3Mi" id="mlz-xO-oOg">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/> <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
@ -47,9 +29,9 @@
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="nmX-lO-eSN"> <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="nmX-lO-eSN">
<rect key="frame" x="15" y="0.0" width="290" height="43"/> <rect key="frame" x="15" y="0.0" width="290" height="43"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/> <fontDescription key="fontDescription" name="Georgia-Bold" family="Georgia" pointSize="16"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/> <color key="highlightedColor" red="0.0039215688593685627" green="0.29803922772407532" blue="0.39607846736907959" alpha="1" colorSpace="deviceRGB"/>
</label> </label>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
@ -65,10 +47,13 @@
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<connections>
<outlet property="tableView" destination="T7T-Ke-Ksy" id="fWu-ZN-ex0"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="uR4-tD-X8j" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="uR4-tD-X8j" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="-419" y="49"/> <point key="canvasLocation" x="-463" y="-315"/>
</scene> </scene>
<!--Slide Navigation Controller--> <!--Slide Navigation Controller-->
<scene sceneID="cQY-wH-O5O"> <scene sceneID="cQY-wH-O5O">
@ -85,7 +70,7 @@
</objects> </objects>
<point key="canvasLocation" x="11" y="49"/> <point key="canvasLocation" x="11" y="49"/>
</scene> </scene>
<!--Home View Controller - Home--> <!--Home-->
<scene sceneID="7Hl-22-JcN"> <scene sceneID="7Hl-22-JcN">
<objects> <objects>
<viewController storyboardIdentifier="HomeViewController" id="mAB-md-uek" customClass="HomeViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="HomeViewController" id="mAB-md-uek" customClass="HomeViewController" sceneMemberID="viewController">
@ -93,33 +78,156 @@
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="0tp-7h-5YK"> <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="fw2-L4-XnY">
<rect key="frame" x="75" y="150" width="133" height="30"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<state key="normal" title="Push Another Page"> <subviews>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="K2W-o4-sG6">
</state> <rect key="frame" x="3" y="14" width="76" height="30"/>
<connections> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segue destination="Tha-f2-JWx" kind="push" identifier="NoMenuSegue" id="jGs-V7-na4"/> <state key="normal" title="Push">
</connections> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</button> </state>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="This is the home Page" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9KI-bx-c1H"> <connections>
<rect key="frame" x="75" y="96" width="170" height="21"/> <segue destination="Tha-f2-JWx" kind="push" id="zQY-ZW-dzI"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> </connections>
<fontDescription key="fontDescription" type="system" pointSize="17"/> </button>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Slide out animation during switch" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="LiR-hw-Ca7">
<nil key="highlightedColor"/> <rect key="frame" x="14" y="64" width="150" height="51"/>
</label> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="RbN-zf-ZQc">
<rect key="frame" x="227" y="14" width="89" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Bounce Me">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="bounceMenu:" destination="mAB-md-uek" eventType="touchUpInside" id="6Xu-R9-337"/>
</connections>
</button>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" id="2Kd-PQ-dMg">
<rect key="frame" x="223" y="74" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="slideOutAnimationSwitchChanged:" destination="mAB-md-uek" eventType="valueChanged" id="Qf2-se-eTN"/>
</connections>
</switch>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Limit swipe gesture to sides" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Zjt-Sm-dG4">
<rect key="frame" x="14" y="238" width="150" height="51"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="83S-hQ-cXn">
<rect key="frame" x="223" y="248" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="limitPanGestureSwitchChanged:" destination="mAB-md-uek" eventType="valueChanged" id="6Hk-Za-6bX"/>
</connections>
</switch>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="t7b-5z-Suv">
<rect key="frame" x="82" y="14" width="141" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Change Animation">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="changeAnimationSelected:" destination="mAB-md-uek" eventType="touchUpInside" id="g8g-m8-C4D"/>
</connections>
</button>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Shadow" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="u77-ra-SzU">
<rect key="frame" x="14" y="130" width="150" height="38"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="PZ2-xm-500">
<rect key="frame" x="223" y="131" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="shadowSwitchSelected:" destination="mAB-md-uek" eventType="valueChanged" id="eqk-Qq-BQi"/>
</connections>
</switch>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Swipe Gesture" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="k2w-0I-RLF">
<rect key="frame" x="14" y="184" width="150" height="38"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="EFN-Hx-p9d">
<rect key="frame" x="223" y="187" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="enablePanGestureSelected:" destination="mAB-md-uek" eventType="valueChanged" id="TYZ-ji-eFO"/>
</connections>
</switch>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Portrait slide offset" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="URw-TY-n72">
<rect key="frame" x="9" y="303" width="150" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" id="3av-wh-d4N">
<rect key="frame" x="9" y="344" width="301" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="60 pixels"/>
<segment title="120 pixels"/>
<segment title="200 pixels"/>
</segments>
<connections>
<action selector="portraitSlideOffsetChanged:" destination="mAB-md-uek" eventType="valueChanged" id="WVY-3r-Evr"/>
</connections>
</segmentedControl>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Landscape slide offset" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Y2u-M6-whd">
<rect key="frame" x="9" y="379" width="203" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" id="WQG-lp-diK">
<rect key="frame" x="9" y="421" width="301" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="60 pixels"/>
<segment title="120 pixels"/>
<segment title="200 pixels"/>
</segments>
<connections>
<action selector="landscapeSlideOffsetChanged:" destination="mAB-md-uek" eventType="valueChanged" id="0Y9-hw-fq3"/>
</connections>
</segmentedControl>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</scrollView>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="Home" id="YV6-8b-6Lr"/> <navigationItem key="navigationItem" title="Home" id="YV6-8b-6Lr"/>
<connections>
<outlet property="landscapeSlideOffsetSegment" destination="WQG-lp-diK" id="bG4-OD-XTb"/>
<outlet property="limitPanGestureSwitch" destination="83S-hQ-cXn" id="eBw-Fv-dnh"/>
<outlet property="panGestureSwitch" destination="EFN-Hx-p9d" id="8Cd-Ve-wnb"/>
<outlet property="portraitSlideOffsetSegment" destination="3av-wh-d4N" id="4qf-ty-x48"/>
<outlet property="scrollView" destination="fw2-L4-XnY" id="OLy-l8-yd4"/>
<outlet property="shadowSwitch" destination="PZ2-xm-500" id="50a-xL-hzV"/>
<outlet property="slideOutAnimationSwitch" destination="2Kd-PQ-dMg" id="XTh-Lw-KJw"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Wf8-rc-ajb" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="Wf8-rc-ajb" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1040" y="-222"/> <point key="canvasLocation" x="1040" y="-222"/>
</scene> </scene>
<!--View Controller - No Menu--> <!--No Menu-->
<scene sceneID="b5b-is-lY2"> <scene sceneID="b5b-is-lY2">
<objects> <objects>
<viewController id="Tha-f2-JWx" sceneMemberID="viewController"> <viewController id="Tha-f2-JWx" sceneMemberID="viewController">
@ -145,7 +253,7 @@
</objects> </objects>
<point key="canvasLocation" x="1503" y="-222"/> <point key="canvasLocation" x="1503" y="-222"/>
</scene> </scene>
<!--View Controller - Login--> <!--Login-->
<scene sceneID="fe8-Xu-DEa"> <scene sceneID="fe8-Xu-DEa">
<objects> <objects>
<viewController id="Rnc-YT-XEu" sceneMemberID="viewController"> <viewController id="Rnc-YT-XEu" sceneMemberID="viewController">
@ -181,13 +289,14 @@
<navigationItem key="navigationItem" title="Login" id="huN-S6-yGa"/> <navigationItem key="navigationItem" title="Login" id="huN-S6-yGa"/>
<connections> <connections>
<segue destination="nrg-5w-bbF" kind="push" identifier="FakeSegue" id="Rkp-YM-Gz0"/> <segue destination="nrg-5w-bbF" kind="push" identifier="FakeSegue" id="Rkp-YM-Gz0"/>
<segue destination="qY1-Jo-UbZ" kind="push" identifier="FakeSegue33" id="37q-Mo-UFN"/>
</connections> </connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="QC9-GK-F3v" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="QC9-GK-F3v" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="499" y="49"/> <point key="canvasLocation" x="499" y="49"/>
</scene> </scene>
<!--Profile View Controller - Profile--> <!--Profile-->
<scene sceneID="xeE-nX-pb6"> <scene sceneID="xeE-nX-pb6">
<objects> <objects>
<viewController storyboardIdentifier="ProfileViewController" id="nrg-5w-bbF" customClass="ProfileViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="ProfileViewController" id="nrg-5w-bbF" customClass="ProfileViewController" sceneMemberID="viewController">
@ -209,8 +318,8 @@
<rect key="frame" x="85" y="111" width="151" height="29"/> <rect key="frame" x="85" y="111" width="151" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments> <segments>
<segment title="Male"/> <segment title="random"/>
<segment title="Female"/> <segment title="?"/>
</segments> </segments>
</segmentedControl> </segmentedControl>
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" id="5Jz-Yy-2WY"> <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" id="5Jz-Yy-2WY">
@ -226,17 +335,17 @@
</objects> </objects>
<point key="canvasLocation" x="1044" y="437"/> <point key="canvasLocation" x="1044" y="437"/>
</scene> </scene>
<!--Friends View Controller--> <!--Friends-->
<scene sceneID="Hbs-BS-FvF"> <scene sceneID="Hbs-BS-FvF">
<objects> <objects>
<tableViewController storyboardIdentifier="FriendsViewController" id="qY1-Jo-UbZ" customClass="FriendsViewController" sceneMemberID="viewController"> <tableViewController storyboardIdentifier="FriendsViewController" title="Friends" id="qY1-Jo-UbZ" customClass="FriendsViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="ZVX-Ox-mWb"> <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="ZVX-Ox-mWb">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<prototypes> <prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="friendCell" textLabel="iWQ-vV-pDm" style="IBUITableViewCellStyleDefault" id="iJ3-ci-bMv"> <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="friendCell" textLabel="iWQ-vV-pDm" style="IBUITableViewCellStyleDefault" id="iJ3-ci-bMv">
<rect key="frame" x="0.0" y="22" width="320" height="44"/> <rect key="frame" x="0.0" y="86" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="iJ3-ci-bMv" id="c95-tX-Iz4"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="iJ3-ci-bMv" id="c95-tX-Iz4">
<rect key="frame" x="0.0" y="0.0" width="287" height="43"/> <rect key="frame" x="0.0" y="0.0" width="287" height="43"/>
@ -252,7 +361,7 @@
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
<connections> <connections>
<segue destination="yDw-XY-MRH" kind="push" id="WHu-9H-qWI"/> <segue destination="yDw-XY-MRH" kind="push" id="f0p-1d-Bw3"/>
</connections> </connections>
</tableViewCell> </tableViewCell>
</prototypes> </prototypes>
@ -262,15 +371,19 @@
<outlet property="delegate" destination="qY1-Jo-UbZ" id="FT7-ey-Dka"/> <outlet property="delegate" destination="qY1-Jo-UbZ" id="FT7-ey-Dka"/>
</connections> </connections>
</tableView> </tableView>
<navigationItem key="navigationItem" id="aah-ni-z8T">
<barButtonItem key="rightBarButtonItem" title="Random Button" id="UsL-My-2Pu"/>
</navigationItem>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
</tableViewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="TeQ-ZL-OLP" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="TeQ-ZL-OLP" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1042" y="1101"/> <point key="canvasLocation" x="1042" y="1101"/>
</scene> </scene>
<!--View Controller - Friend Info--> <!--Friends-->
<scene sceneID="yJW-sY-3g9"> <scene sceneID="yJW-sY-3g9">
<objects> <objects>
<viewController id="yDw-XY-MRH" sceneMemberID="viewController"> <viewController title="Friends" id="yDw-XY-MRH" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="iHZ-lt-TwS"> <view key="view" contentMode="scaleToFill" id="iHZ-lt-TwS">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
@ -286,12 +399,13 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" title="Friend Info" id="ZvF-si-2WZ"/> <navigationItem key="navigationItem" title="Friend Info" id="ZvF-si-2WZ"/>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="5rh-jR-0iE" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="5rh-jR-0iE" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1503" y="1100"/> <point key="canvasLocation" x="1503" y="1100"/>
</scene> </scene>
<!--Profile Detail View Controller - Right Menu Only--> <!--Right Menu Only-->
<scene sceneID="w1a-xD-Zgv"> <scene sceneID="w1a-xD-Zgv">
<objects> <objects>
<viewController storyboardIdentifier="ProfileDetailViewController" id="BLR-mt-TZ9" customClass="ProfileDetailViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="ProfileDetailViewController" id="BLR-mt-TZ9" customClass="ProfileDetailViewController" sceneMemberID="viewController">
@ -306,6 +420,57 @@
</objects> </objects>
<point key="canvasLocation" x="1503" y="437"/> <point key="canvasLocation" x="1503" y="437"/>
</scene> </scene>
<!--Right Menu View Controller-->
<scene sceneID="4D0-hr-unv">
<objects>
<viewController storyboardIdentifier="RightMenuViewController" id="CkC-Jl-7gs" customClass="RightMenuViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="PkA-11-xcs">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="rxo-EL-mMo">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="insetFor6xAndEarlier" minX="0.0" minY="20" maxX="0.0" maxY="0.0"/>
<color key="sectionIndexTrackingBackgroundColor" red="0.83529418710000003" green="0.77647066119999997" blue="0.9450981021" alpha="1" colorSpace="deviceRGB"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="rightMenuCell" textLabel="M7n-za-tWm" style="IBUITableViewCellStyleDefault" id="MFj-zm-kmh">
<rect key="frame" x="0.0" y="22" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MFj-zm-kmh" id="Z1m-Cs-KLm">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Home" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="M7n-za-tWm">
<rect key="frame" x="15" y="0.0" width="290" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" name="Georgia-Bold" family="Georgia" pointSize="16"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" red="0.0039215688589999999" green="0.29803922770000002" blue="0.39607846740000002" alpha="1" colorSpace="deviceRGB"/>
</label>
</subviews>
</tableViewCellContentView>
<inset key="separatorInset" minX="15" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
</prototypes>
<sections/>
<connections>
<outlet property="dataSource" destination="CkC-Jl-7gs" id="r1f-eU-lMH"/>
<outlet property="delegate" destination="CkC-Jl-7gs" id="z1c-4e-B0J"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<connections>
<outlet property="tableView" destination="rxo-EL-mMo" id="coH-OC-YF2"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dgu-27-ZWK" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-458" y="371"/>
</scene>
</scenes> </scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics"> <simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/> <simulatedStatusBarMetrics key="statusBar"/>

View File

@ -6,8 +6,8 @@
// Copyright (c) 2013 Aryan Ghassemi. All rights reserved. // Copyright (c) 2013 Aryan Ghassemi. All rights reserved.
// //
#import <SenTestingKit/SenTestingKit.h> #import <XCTest/XCTest.h>
@interface SlideMenuTests : SenTestCase @interface SlideMenuTests : XCTestCase
@end @end

View File

@ -26,7 +26,7 @@
- (void)testExample - (void)testExample
{ {
STFail(@"Unit tests are not implemented yet in SlideMenuTests"); XCTFail(@"Unit tests are not implemented yet in SlideMenuTests");
} }
@end @end

View File

@ -1,16 +1,16 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'iOS-Slide-Menu' s.name = 'iOS-Slide-Menu'
s.version = '1.3.0' s.version = '1.4.6'
s.summary = 'A Slide Menu for iOS' s.summary = 'A Slide Menu for iOS'
s.homepage = 'https://github.com/aryaxt/iOS-Slide-Menu' s.homepage = 'https://github.com/aryaxt/iOS-Slide-Menu'
s.license = { s.license = {
:type => 'MIT', :type => 'MIT',
:file => 'License.txt' :file => 'License.txt'
} }
s.author = {'Aryan Gh' => 'https://github.com/aryaxt/iOS-Slide-Menu'} s.author = {'Aryan Ghassemi' => 'https://github.com/aryaxt/iOS-Slide-Menu'}
s.source = {:git => 'https://github.com/aryaxt/iOS-Slide-Menu.git', :tag => '1.3.0'} s.source = {:git => 'https://github.com/aryaxt/iOS-Slide-Menu.git', :tag => '1.4.6'}
s.platform = :ios, '6.0' s.platform = :ios, '6.0'
s.source_files = 'SlideMenu/Source/*.{h,m}', 'SlideMenu/Source/Animations/*.{h,m}', 'SlideMenu/Source/Assets/*.{png}' s.source_files = 'SlideMenu/Source/*.{h,m}', 'SlideMenu/Source/Animations/*.{h,m}'
s.resources = ['SlideMenu/Source/Assets/**/*'] s.resources = ['SlideMenu/Source/Assets/**/*']
s.framework = 'Foundation', 'UIKit' s.framework = 'Foundation', 'UIKit'
s.requires_arc = true s.requires_arc = true