Compare commits
70 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
d48909d9c4 | |
|
|
71eb343abe | |
|
|
95f692c225 | |
|
|
42e62a4dbd | |
|
|
2ed9400c82 | |
|
|
06deaf308c | |
|
|
f3b60362da | |
|
|
9550d4719b | |
|
|
d088879c28 | |
|
|
5ef5a8d832 | |
|
|
0da57dfd53 | |
|
|
240684c788 | |
|
|
c6c729bb52 | |
|
|
7fb3ec03e9 | |
|
|
a9ca4b49b0 | |
|
|
363306a5c7 | |
|
|
4ce138d4e9 | |
|
|
43cb763d79 | |
|
|
8681050dd0 | |
|
|
98591515e6 | |
|
|
1a1b8523ec | |
|
|
3c1b09fe74 | |
|
|
6a9333e81b | |
|
|
07e14208be | |
|
|
22c03d987e | |
|
|
0e1ac70eeb | |
|
|
2cf2b31c62 | |
|
|
f9909b669f | |
|
|
792fb82d6b | |
|
|
eb2de83daf | |
|
|
2786733c82 | |
|
|
9d38ca4c76 | |
|
|
c2638e8935 | |
|
|
907eee38e8 | |
|
|
4c66f6c25c | |
|
|
810457bb73 | |
|
|
43f62e7321 | |
|
|
7dba83b832 | |
|
|
352a127909 | |
|
|
f2d50da1f6 | |
|
|
cf05a15b2f | |
|
|
5aa1fbcd94 | |
|
|
ffa26fba5b | |
|
|
81378731d9 | |
|
|
eca136202c | |
|
|
3513ce023a | |
|
|
da97baea8c | |
|
|
5cf9218a78 | |
|
|
f36d092d32 | |
|
|
705b9b9371 | |
|
|
437270ae30 | |
|
|
2a6be6a9fb | |
|
|
9e28dcbfb8 | |
|
|
1c341f78e0 | |
|
|
7a6dcf2d9d | |
|
|
136b1aecf0 | |
|
|
19f01241d8 | |
|
|
3aff93e08e | |
|
|
fd9a508323 | |
|
|
38f6bb528c | |
|
|
d1281e7361 | |
|
|
8095b8c58c | |
|
|
d72c99be3c | |
|
|
8939751726 | |
|
|
439a6d76aa | |
|
|
220512c37f | |
|
|
a718c6a097 | |
|
|
25e35c5742 | |
|
|
af932304ad | |
|
|
e04b5f806a |
67
README.md
67
README.md
|
|
@ -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.
|
||||
|
||||
- [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)
|
||||
- [Public Properties](https://github.com/aryaxt/iOS-Slide-Menu#public-properties)
|
||||
- [Public Methods](https://github.com/aryaxt/iOS-Slide-Menu#public-methods)
|
||||
- [Custom Animations](https://github.com/aryaxt/iOS-Slide-Menu#custom-animations)
|
||||
- [Notifications](https://github.com/aryaxt/iOS-Slide-Menu#notifications)
|
||||
|
||||

|
||||
|
||||
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
|
||||
---------
|
||||
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
|
||||
{
|
||||
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;
|
||||
|
||||
// Override point for customization after application launch.
|
||||
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
|
||||
---------
|
||||
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>
|
||||
@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 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
|
||||
The viewController of the right menu in the navigationController
|
||||
###### 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
|
||||
###### 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
|
||||
###### 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 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
|
||||
|
||||
###### - (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;
|
||||
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;
|
||||
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)];
|
||||
[button setImage:[UIImage imageNamed:@"menu-button"] forState:UIControlStateNormal];
|
||||
|
|
@ -126,6 +152,8 @@ UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomVie
|
|||
[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;
|
||||
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.
|
||||
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"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
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 */; };
|
||||
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 */; };
|
||||
15371F0C1728E3B400A508F4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15371EE41728E3B400A508F4 /* Foundation.framework */; };
|
||||
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 */; };
|
||||
15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C9AC1C1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.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 */; };
|
||||
15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD688172A22B700F0C53E /* ProfileDetailViewController.m */; };
|
||||
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 */; };
|
||||
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 */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
|
|
@ -65,8 +69,7 @@
|
|||
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>"; };
|
||||
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; };
|
||||
15371F091728E3B400A508F4 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
15371F081728E3B400A508F4 /* SlideMenuTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SlideMenuTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
15CBD678172A15F900F0C53E /* MenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuViewController.h; sourceTree = "<group>"; };
|
||||
15CBD679172A15F900F0C53E /* MenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuViewController.m; sourceTree = "<group>"; };
|
||||
15CBD678172A15F900F0C53E /* LeftMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LeftMenuViewController.h; 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>"; };
|
||||
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>"; };
|
||||
|
|
@ -95,6 +98,12 @@
|
|||
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>"; };
|
||||
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>"; };
|
||||
997929E1187336AA00716C77 /* FriendsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FriendsViewController.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
|
@ -115,7 +124,6 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
15371F0A1728E3B400A508F4 /* SenTestingKit.framework in Frameworks */,
|
||||
15371F0B1728E3B400A508F4 /* UIKit.framework in Frameworks */,
|
||||
15371F0C1728E3B400A508F4 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
|
|
@ -138,7 +146,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
15371EDE1728E3B400A508F4 /* SlideMenu.app */,
|
||||
15371F081728E3B400A508F4 /* SlideMenuTests.octest */,
|
||||
15371F081728E3B400A508F4 /* SlideMenuTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -150,7 +158,6 @@
|
|||
15371EE21728E3B400A508F4 /* UIKit.framework */,
|
||||
15371EE41728E3B400A508F4 /* Foundation.framework */,
|
||||
15371EE61728E3B400A508F4 /* CoreGraphics.framework */,
|
||||
15371F091728E3B400A508F4 /* SenTestingKit.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -158,6 +165,7 @@
|
|||
15371EE81728E3B400A508F4 /* SlideMenu */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
15E7D319190C2894002EAE3F /* Images */,
|
||||
15CBD675172A15F900F0C53E /* Helper Classes */,
|
||||
15371F241728E43600A508F4 /* Source */,
|
||||
15371EF11728E3B400A508F4 /* AppDelegate.h */,
|
||||
|
|
@ -234,8 +242,10 @@
|
|||
15CBD675172A15F900F0C53E /* Helper Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
15CBD678172A15F900F0C53E /* MenuViewController.h */,
|
||||
15CBD679172A15F900F0C53E /* MenuViewController.m */,
|
||||
15CBD678172A15F900F0C53E /* LeftMenuViewController.h */,
|
||||
15CBD679172A15F900F0C53E /* LeftMenuViewController.m */,
|
||||
15E7D316190C24E3002EAE3F /* RightMenuViewController.h */,
|
||||
15E7D317190C24E3002EAE3F /* RightMenuViewController.m */,
|
||||
15CBD676172A15F900F0C53E /* HomeViewController.h */,
|
||||
15CBD677172A15F900F0C53E /* HomeViewController.m */,
|
||||
997929E0187336AA00716C77 /* FriendsViewController.h */,
|
||||
|
|
@ -257,6 +267,17 @@
|
|||
path = Assets;
|
||||
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 */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
|
|
@ -293,8 +314,8 @@
|
|||
);
|
||||
name = SlideMenuTests;
|
||||
productName = SlideMenuTests;
|
||||
productReference = 15371F081728E3B400A508F4 /* SlideMenuTests.octest */;
|
||||
productType = "com.apple.product-type.bundle";
|
||||
productReference = 15371F081728E3B400A508F4 /* SlideMenuTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
|
|
@ -302,6 +323,7 @@
|
|||
15371ED51728E3B400A508F4 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastTestingUpgradeCheck = 0600;
|
||||
LastUpgradeCheck = 0500;
|
||||
ORGANIZATIONNAME = "Aryan Ghassemi";
|
||||
};
|
||||
|
|
@ -329,9 +351,13 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
15371EED1728E3B400A508F4 /* InfoPlist.strings in Resources */,
|
||||
15E7D321190C3B75002EAE3F /* rightMenu.jpg in Resources */,
|
||||
15E7D327190C3DAE002EAE3F /* gear.png in Resources */,
|
||||
15371EF51728E3B400A508F4 /* Default.png in Resources */,
|
||||
15371EF71728E3B400A508F4 /* Default@2x.png in Resources */,
|
||||
15E7D31F190C33A5002EAE3F /* leftMenu.jpg in Resources */,
|
||||
15371EF91728E3B400A508F4 /* Default-568h@2x.png in Resources */,
|
||||
15E7D31B190C289E002EAE3F /* animation.png in Resources */,
|
||||
15371EFC1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard in Resources */,
|
||||
15371EFF1728E3B400A508F4 /* MainStoryboard_iPad.storyboard in Resources */,
|
||||
15CBD6BE172BBB3600F0C53E /* menu-button@2x.png in Resources */,
|
||||
|
|
@ -370,6 +396,7 @@
|
|||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
15E7D318190C24E3002EAE3F /* RightMenuViewController.m in Sources */,
|
||||
15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */,
|
||||
15C9AC171895A7E7006E6F27 /* SlideNavigationContorllerAnimatorSlideAndFade.m in Sources */,
|
||||
15371EEF1728E3B400A508F4 /* main.m in Sources */,
|
||||
|
|
@ -379,7 +406,7 @@
|
|||
15C9AC111895A7BF006E6F27 /* SlideNavigationContorllerAnimatorSlide.m in Sources */,
|
||||
15CBD67C172A15F900F0C53E /* HomeViewController.m in Sources */,
|
||||
997929E2187336AA00716C77 /* FriendsViewController.m in Sources */,
|
||||
15CBD67D172A15F900F0C53E /* MenuViewController.m in Sources */,
|
||||
15CBD67D172A15F900F0C53E /* LeftMenuViewController.m in Sources */,
|
||||
15C9AC1A1895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m in Sources */,
|
||||
15CBD67E172A15F900F0C53E /* ProfileViewController.m in Sources */,
|
||||
15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */,
|
||||
|
|
@ -498,6 +525,7 @@
|
|||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
|
||||
INFOPLIST_FILE = "SlideMenu/SlideMenu-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
|
|
@ -509,6 +537,7 @@
|
|||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
|
||||
INFOPLIST_FILE = "SlideMenu/SlideMenu-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
|
|
@ -521,13 +550,13 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"\"$(SDKROOT)/Developer/Library/Frameworks\"",
|
||||
"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
|
||||
INFOPLIST_FILE = "SlideMenuTests/SlideMenuTests-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = octest;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
|
|
@ -538,13 +567,13 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"\"$(SDKROOT)/Developer/Library/Frameworks\"",
|
||||
"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "SlideMenu/SlideMenu-Prefix.pch";
|
||||
INFOPLIST_FILE = "SlideMenuTests/SlideMenuTests-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = octest;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@
|
|||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "SlideNavigationController.h"
|
||||
#import "MenuViewController.h"
|
||||
#import "LeftMenuViewController.h"
|
||||
#import "RightMenuViewController.h"
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,23 +15,42 @@
|
|||
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
|
||||
bundle: nil];
|
||||
|
||||
MenuViewController *rightMenu = (MenuViewController*)[mainStoryboard
|
||||
instantiateViewControllerWithIdentifier: @"MenuViewController"];
|
||||
rightMenu.cellIdentifier = @"rightMenuCell";
|
||||
LeftMenuViewController *leftMenu = (LeftMenuViewController*)[mainStoryboard
|
||||
instantiateViewControllerWithIdentifier: @"LeftMenuViewController"];
|
||||
|
||||
MenuViewController *leftMenu = (MenuViewController*)[mainStoryboard
|
||||
instantiateViewControllerWithIdentifier: @"MenuViewController"];
|
||||
leftMenu.cellIdentifier = @"leftMenuCell";
|
||||
RightMenuViewController *rightMenu = (RightMenuViewController*)[mainStoryboard
|
||||
instantiateViewControllerWithIdentifier: @"RightMenuViewController"];
|
||||
|
||||
[SlideNavigationController sharedInstance].rightMenu = rightMenu;
|
||||
[SlideNavigationController sharedInstance].leftMenu = leftMenu;
|
||||
[SlideNavigationController sharedInstance].menuRevealAnimationDuration = .18;
|
||||
|
||||
// Creating a custom bar button for right menu
|
||||
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];
|
||||
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
|
||||
[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.
|
||||
|
|
|
|||
|
|
@ -20,11 +20,6 @@
|
|||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)slideNavigationControllerShouldDisplayRightMenu
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||
{
|
||||
return 20;
|
||||
|
|
@ -33,7 +28,7 @@
|
|||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,4 +11,21 @@
|
|||
|
||||
@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
|
||||
|
|
|
|||
|
|
@ -7,12 +7,21 @@
|
|||
//
|
||||
|
||||
#import "HomeViewController.h"
|
||||
#import "LeftMenuViewController.h"
|
||||
|
||||
@implementation HomeViewController
|
||||
|
||||
- (void)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 -
|
||||
|
|
@ -27,4 +36,80 @@
|
|||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 |
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 |
|
|
@ -9,7 +9,7 @@
|
|||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.aryaxt.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<string>com.aryaxt.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
|
|
|
|||
|
|
@ -33,11 +33,11 @@
|
|||
|
||||
- (id)init
|
||||
{
|
||||
if (self = [self initWithSlideMovement:100])
|
||||
{
|
||||
}
|
||||
|
||||
return self;
|
||||
if (self = [self initWithSlideMovement:100])
|
||||
{
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)initWithSlideMovement:(CGFloat)slideMovement
|
||||
|
|
@ -55,98 +55,119 @@
|
|||
- (void)prepareMenuForAnimation:(Menu)menu
|
||||
{
|
||||
UIViewController *menuViewController = (menu == MenuLeft)
|
||||
? [SlideNavigationController sharedInstance].leftMenu
|
||||
: [SlideNavigationController sharedInstance].rightMenu;
|
||||
? [SlideNavigationController sharedInstance].leftMenu
|
||||
: [SlideNavigationController sharedInstance].rightMenu;
|
||||
|
||||
UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation;
|
||||
CGRect rect = menuViewController.view.frame;
|
||||
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
if (orientation == UIInterfaceOrientationLandscapeRight)
|
||||
{
|
||||
rect.origin.y = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement;
|
||||
}
|
||||
else
|
||||
{
|
||||
rect.origin.y = (menu == MenuRight) ? self.slideMovement*-1 : self.slideMovement;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
|
||||
{
|
||||
rect.origin.x = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
if (orientation == UIInterfaceOrientationLandscapeRight)
|
||||
{
|
||||
rect.origin.y = (menu == MenuLeft) ? self.slideMovement*-1 : self.slideMovement;
|
||||
}
|
||||
else
|
||||
{
|
||||
rect.origin.y = (menu == MenuRight) ? self.slideMovement*-1 : self.slideMovement;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
- (void)animateMenu:(Menu)menu withProgress:(CGFloat)progress
|
||||
{
|
||||
UIViewController *menuViewController = (menu == MenuLeft)
|
||||
? [SlideNavigationController sharedInstance].leftMenu
|
||||
: [SlideNavigationController sharedInstance].rightMenu;
|
||||
|
||||
UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation;
|
||||
|
||||
NSInteger location = (menu == MenuLeft)
|
||||
? (self.slideMovement * -1) + (self.slideMovement * progress)
|
||||
: (self.slideMovement * (1-progress));
|
||||
|
||||
if (menu == MenuLeft)
|
||||
location = (location > 0) ? 0 : location;
|
||||
|
||||
if (menu == MenuRight)
|
||||
location = (location < 0) ? 0 : location;
|
||||
|
||||
CGRect rect = menuViewController.view.frame;
|
||||
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
rect.origin.y = (orientation == UIInterfaceOrientationLandscapeRight) ? location : location*-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
rect.origin.x = (orientation == UIInterfaceOrientationPortrait) ? location : location*-1;
|
||||
}
|
||||
|
||||
menuViewController.view.frame = rect;
|
||||
UIViewController *menuViewController = (menu == MenuLeft)
|
||||
? [SlideNavigationController sharedInstance].leftMenu
|
||||
: [SlideNavigationController sharedInstance].rightMenu;
|
||||
|
||||
UIInterfaceOrientation orientation = [SlideNavigationController sharedInstance].interfaceOrientation;
|
||||
|
||||
NSInteger location = (menu == MenuLeft)
|
||||
? (self.slideMovement * -1) + (self.slideMovement * progress)
|
||||
: (self.slideMovement * (1-progress));
|
||||
|
||||
if (menu == MenuLeft)
|
||||
location = (location > 0) ? 0 : location;
|
||||
|
||||
if (menu == MenuRight)
|
||||
location = (location < 0) ? 0 : location;
|
||||
|
||||
CGRect rect = menuViewController.view.frame;
|
||||
|
||||
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
|
||||
{
|
||||
rect.origin.x = location;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
rect.origin.y = (orientation == UIInterfaceOrientationLandscapeRight) ? location : location*-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
rect.origin.x = (orientation == UIInterfaceOrientationPortrait) ? location : location*-1;
|
||||
}
|
||||
}
|
||||
|
||||
menuViewController.view.frame = rect;
|
||||
}
|
||||
|
||||
- (void)clear
|
||||
{
|
||||
[self clearMenu:MenuLeft];
|
||||
[self clearMenu:MenuRight];
|
||||
[self clearMenu:MenuLeft];
|
||||
[self clearMenu:MenuRight];
|
||||
}
|
||||
|
||||
#pragma mark - Private Method -
|
||||
|
||||
- (void)clearMenu:(Menu)menu
|
||||
{
|
||||
UIViewController *menuViewController = (menu == MenuLeft)
|
||||
? [SlideNavigationController sharedInstance].leftMenu
|
||||
: [SlideNavigationController sharedInstance].rightMenu;
|
||||
|
||||
UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation;
|
||||
|
||||
CGRect rect = menuViewController.view.frame;
|
||||
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
rect.origin.y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
rect.origin.x = 0;
|
||||
}
|
||||
|
||||
menuViewController.view.frame = rect;
|
||||
UIViewController *menuViewController = (menu == MenuLeft)
|
||||
? [SlideNavigationController sharedInstance].leftMenu
|
||||
: [SlideNavigationController sharedInstance].rightMenu;
|
||||
|
||||
UIInterfaceOrientation orientation= [SlideNavigationController sharedInstance].interfaceOrientation;
|
||||
|
||||
CGRect rect = menuViewController.view.frame;
|
||||
|
||||
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
|
||||
{
|
||||
rect.origin.x = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
rect.origin.y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
rect.origin.x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
menuViewController.view.frame = rect;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@
|
|||
#import <UIKit/UIKit.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>
|
||||
@optional
|
||||
- (BOOL)slideNavigationControllerShouldDisplayRightMenu;
|
||||
|
|
@ -35,29 +37,47 @@
|
|||
@end
|
||||
|
||||
typedef enum{
|
||||
MenuLeft,
|
||||
MenuRight,
|
||||
MenuLeft = 1,
|
||||
MenuRight = 2
|
||||
}Menu;
|
||||
|
||||
@protocol SlideNavigationContorllerAnimator;
|
||||
@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 enableSwipeGesture;
|
||||
@property (nonatomic, assign) BOOL enableShadow;
|
||||
@property (nonatomic, strong) UIViewController *rightMenu;
|
||||
@property (nonatomic, strong) UIViewController *leftMenu;
|
||||
@property (nonatomic, strong) UIBarButtonItem *leftBarButtonItem;
|
||||
@property (nonatomic, strong) UIBarButtonItem *rightBarButtonItem;
|
||||
@property (nonatomic, assign) CGFloat portraitSlideOffset;
|
||||
@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;
|
||||
|
||||
+ (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)closeMenuWithCompletion:(void (^)())completion;
|
||||
- (void)toggleLeftMenu;
|
||||
- (void)toggleRightMenu;
|
||||
- (BOOL)isMenuOpen;
|
||||
|
||||
- (void)prepareMenuForReveal:(Menu)menu;
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -28,16 +28,31 @@
|
|||
#import "SlideNavigationController.h"
|
||||
#import "SlideNavigationContorllerAnimator.h"
|
||||
|
||||
@interface SlideNavigationController()
|
||||
typedef enum {
|
||||
PopTypeAll,
|
||||
PopTypeRoot
|
||||
} PopType;
|
||||
|
||||
@interface SlideNavigationController() <UIGestureRecognizerDelegate>
|
||||
@property (nonatomic, strong) UITapGestureRecognizer *tapRecognizer;
|
||||
@property (nonatomic, strong) UIPanGestureRecognizer *panRecognizer;
|
||||
@property (nonatomic, assign) CGPoint draggingPoint;
|
||||
@property (nonatomic, assign) Menu lastRevealedMenu;
|
||||
@property (nonatomic, assign) BOOL menuNeedsLayout;
|
||||
@end
|
||||
|
||||
@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_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_IMAGE @"menu-button"
|
||||
#define MENU_SHADOW_RADIUS 10
|
||||
|
|
@ -45,6 +60,9 @@
|
|||
#define MENU_DEFAULT_SLIDE_OFFSET 60
|
||||
#define MENU_FAST_VELOCITY_FOR_SWIPE_FOLLOW_DIRECTION 1200
|
||||
#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;
|
||||
|
||||
|
|
@ -52,6 +70,9 @@ static SlideNavigationController *singletonInstance;
|
|||
|
||||
+ (SlideNavigationController *)sharedInstance
|
||||
{
|
||||
if (!singletonInstance)
|
||||
NSLog(@"SlideNavigationController has not been initialized. Either place one in your storyboard or initialize one in code");
|
||||
|
||||
return singletonInstance;
|
||||
}
|
||||
|
||||
|
|
@ -85,112 +106,202 @@ static SlideNavigationController *singletonInstance;
|
|||
return self;
|
||||
}
|
||||
|
||||
- (id)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass
|
||||
{
|
||||
if (self = [super initWithNavigationBarClass:navigationBarClass toolbarClass:toolbarClass])
|
||||
{
|
||||
[self setup];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (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.portraitSlideOffset = MENU_DEFAULT_SLIDE_OFFSET;
|
||||
self.panGestureSideOffset = 0;
|
||||
self.avoidSwitchingToSameClassViewController = YES;
|
||||
singletonInstance = self;
|
||||
self.enableShadow = YES;
|
||||
self.enableSwipeGesture = YES;
|
||||
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
|
||||
{
|
||||
[super viewWillLayoutSubviews];
|
||||
|
||||
// Update shadow size
|
||||
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
|
||||
// Update shadow size of enabled
|
||||
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
|
||||
{
|
||||
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
|
||||
|
||||
// Avoid an ugnly shadow in background while rotating
|
||||
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];
|
||||
self.menuNeedsLayout = YES;
|
||||
}
|
||||
|
||||
#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])
|
||||
{
|
||||
[self closeMenuWithCompletion:completion];
|
||||
return;
|
||||
}
|
||||
|
||||
if ([self isMenuOpen])
|
||||
{
|
||||
[UIView animateWithDuration:MENU_SLIDE_ANIMATION_DURATION
|
||||
delay:0
|
||||
options:UIViewAnimationOptionCurveEaseOut
|
||||
animations:^{
|
||||
CGFloat width = self.horizontalSize;
|
||||
CGFloat moveLocation = (self.horizontalLocation> 0) ? width : -1*width;
|
||||
[self moveHorizontallyToLocation:moveLocation];
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
[super popToRootViewControllerAnimated:NO];
|
||||
[super pushViewController:viewController animated:NO];
|
||||
|
||||
[self closeMenuWithCompletion:^{
|
||||
if (completion)
|
||||
completion();
|
||||
}];
|
||||
}];
|
||||
}
|
||||
else
|
||||
{
|
||||
[super popToRootViewControllerAnimated:NO];
|
||||
[super pushViewController:viewController animated:YES];
|
||||
|
||||
if (completion)
|
||||
completion();
|
||||
}
|
||||
|
||||
void (^switchAndCallCompletion)(BOOL) = ^(BOOL closeMenuBeforeCallingCompletion) {
|
||||
if (poptype == PopTypeAll) {
|
||||
[self setViewControllers:@[viewController]];
|
||||
}
|
||||
else {
|
||||
[super popToRootViewControllerAnimated:NO];
|
||||
[super pushViewController:viewController animated:NO];
|
||||
}
|
||||
|
||||
if (closeMenuBeforeCallingCompletion)
|
||||
{
|
||||
[self closeMenuWithCompletion:^{
|
||||
if (completion)
|
||||
completion();
|
||||
}];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (completion)
|
||||
completion();
|
||||
}
|
||||
};
|
||||
|
||||
// if ([self isMenuOpen])
|
||||
// {
|
||||
// if (slideOutAnimation)
|
||||
// {
|
||||
// [UIView animateWithDuration:(slideOutAnimation) ? self.menuRevealAnimationDuration : 0
|
||||
// delay:0
|
||||
// options:self.menuRevealAnimationOption
|
||||
// animations:^{
|
||||
// CGFloat width = self.horizontalSize;
|
||||
// CGFloat moveLocation = (self.horizontalLocation> 0) ? width : -1*width;
|
||||
// [self moveHorizontallyToLocation:moveLocation];
|
||||
// } completion:^(BOOL finished) {
|
||||
// switchAndCallCompletion(YES);
|
||||
// }];
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// switchAndCallCompletion(YES);
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// switchAndCallCompletion(NO);
|
||||
// }
|
||||
|
||||
switchAndCallCompletion([self isMenuOpen]);
|
||||
}
|
||||
|
||||
- (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
|
||||
|
|
@ -208,6 +319,26 @@ static SlideNavigationController *singletonInstance;
|
|||
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 -
|
||||
|
||||
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
|
||||
|
|
@ -258,6 +389,37 @@ static SlideNavigationController *singletonInstance;
|
|||
|
||||
#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
|
||||
{
|
||||
if ([self isMenuOpen])
|
||||
|
|
@ -306,15 +468,30 @@ static SlideNavigationController *singletonInstance;
|
|||
return NO;
|
||||
}
|
||||
|
||||
- (void)openMenu:(Menu)menu withDuration:(float)duration andCompletion:(void (^)())completion
|
||||
- (CGFloat)openingPart
|
||||
{
|
||||
[self.topViewController.view addGestureRecognizer:self.tapRecognizer];
|
||||
|
||||
[self prepareMenuForReveal:menu forcePrepare:NO];
|
||||
CGFloat slideOffset = self.slideOffset;
|
||||
CGFloat absHorizontalLocation = (CGFloat)fabs(self.horizontalLocation);
|
||||
|
||||
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
|
||||
delay:0
|
||||
options:UIViewAnimationOptionCurveEaseOut
|
||||
options:self.menuRevealAnimationOption
|
||||
animations:^{
|
||||
CGRect rect = self.view.frame;
|
||||
CGFloat width = self.horizontalSize;
|
||||
|
|
@ -324,16 +501,24 @@ static SlideNavigationController *singletonInstance;
|
|||
completion:^(BOOL finished) {
|
||||
if (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
|
||||
delay:0
|
||||
options:UIViewAnimationOptionCurveEaseOut
|
||||
options:self.menuRevealAnimationOption
|
||||
animations:^{
|
||||
CGRect rect = self.view.frame;
|
||||
rect.origin.x = 0;
|
||||
|
|
@ -342,6 +527,8 @@ static SlideNavigationController *singletonInstance;
|
|||
completion:^(BOOL finished) {
|
||||
if (completion)
|
||||
completion();
|
||||
|
||||
[self postNotificationWithName:SlideNavigationControllerDidClose forMenu:menu];
|
||||
}];
|
||||
}
|
||||
|
||||
|
|
@ -350,17 +537,29 @@ static SlideNavigationController *singletonInstance;
|
|||
CGRect rect = self.view.frame;
|
||||
UIInterfaceOrientation orientation = self.interfaceOrientation;
|
||||
Menu menu = (self.horizontalLocation >= 0 && location >= 0) ? MenuLeft : MenuRight;
|
||||
|
||||
if ((location > 0 && self.horizontalLocation <= 0) || (location < 0 && self.horizontalLocation >= 0)) {
|
||||
[self postNotificationWithName:SlideNavigationControllerDidReveal forMenu:(location > 0) ? MenuLeft : MenuRight];
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
|
||||
{
|
||||
rect.origin.x = location;
|
||||
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 updateMenuAnimation:menu];
|
||||
|
|
@ -381,38 +580,37 @@ static SlideNavigationController *singletonInstance;
|
|||
rect.origin.x = 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 (!isIos7)
|
||||
{
|
||||
// For some reasons in landscape belos 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;
|
||||
rect.size.width = self.view.frame.size.width-STATUS_BAR_HEIGHT;
|
||||
}
|
||||
// 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;
|
||||
rect.size.width = self.view.frame.size.width-STATUS_BAR_HEIGHT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!isIos7)
|
||||
{
|
||||
// For some reasons in landscape belos 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;
|
||||
rect.size.height = self.view.frame.size.height-STATUS_BAR_HEIGHT;
|
||||
}
|
||||
// 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;
|
||||
rect.size.height = self.view.frame.size.height-STATUS_BAR_HEIGHT;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
// If menu is already open don't prepare, unless forcePrepare is set to true
|
||||
if ([self isMenuOpen] && !forcePrepare)
|
||||
return;
|
||||
|
||||
self.lastRevealedMenu = menu;
|
||||
|
||||
[removingMenuViewController.view removeFromSuperview];
|
||||
[self.view.window insertSubview:menuViewController.view atIndex:0];
|
||||
|
|
@ -427,18 +625,25 @@ static SlideNavigationController *singletonInstance;
|
|||
CGRect rect = self.view.frame;
|
||||
UIInterfaceOrientation orientation = self.interfaceOrientation;
|
||||
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
return (orientation == UIInterfaceOrientationLandscapeRight)
|
||||
? rect.origin.y
|
||||
: rect.origin.y*-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (orientation == UIInterfaceOrientationPortrait)
|
||||
? rect.origin.x
|
||||
: rect.origin.x*-1;
|
||||
}
|
||||
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
|
||||
{
|
||||
return rect.origin.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
return (orientation == UIInterfaceOrientationLandscapeRight)
|
||||
? rect.origin.y
|
||||
: rect.origin.y*-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (orientation == UIInterfaceOrientationPortrait)
|
||||
? rect.origin.x
|
||||
: rect.origin.x*-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (CGFloat)horizontalSize
|
||||
|
|
@ -446,27 +651,36 @@ static SlideNavigationController *singletonInstance;
|
|||
CGRect rect = self.view.frame;
|
||||
UIInterfaceOrientation orientation = self.interfaceOrientation;
|
||||
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
return rect.size.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
return rect.size.width;
|
||||
}
|
||||
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
|
||||
{
|
||||
return rect.size.width;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (UIInterfaceOrientationIsLandscape(orientation))
|
||||
{
|
||||
return rect.size.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
return rect.size.width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - UINavigationControllerDelegate Methods -
|
||||
|
||||
- (void)navigationController:(UINavigationController *)navigationController
|
||||
willShowViewController:(UIViewController *)viewController
|
||||
animated:(BOOL)animated
|
||||
- (void)postNotificationWithName:(NSString *)name forMenu:(Menu)menu
|
||||
{
|
||||
if ([self shouldDisplayMenu:MenuLeft forViewController:viewController])
|
||||
viewController.navigationItem.leftBarButtonItem = [self barButtonItemForMenu:MenuLeft];
|
||||
|
||||
if ([self shouldDisplayMenu:MenuRight forViewController:viewController])
|
||||
viewController.navigationItem.rightBarButtonItem = [self barButtonItemForMenu:MenuRight];
|
||||
[self postNotificationWithName:name forMenu:menu withExtParams:nil];
|
||||
}
|
||||
|
||||
- (void)postNotificationWithName:(NSString *)name forMenu:(Menu)menu withExtParams:(NSDictionary *)extParams
|
||||
{
|
||||
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
|
||||
|
|
@ -484,7 +698,6 @@ static SlideNavigationController *singletonInstance;
|
|||
[self closeMenuWithCompletion:nil];
|
||||
else
|
||||
[self openMenu:MenuLeft withCompletion:nil];
|
||||
|
||||
}
|
||||
|
||||
- (void)righttMenuSelected:(id)sender
|
||||
|
|
@ -502,41 +715,54 @@ static SlideNavigationController *singletonInstance;
|
|||
[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
|
||||
{
|
||||
CGPoint translation = [aPanRecognizer translationInView:aPanRecognizer.view];
|
||||
CGPoint velocity = [aPanRecognizer velocityInView:aPanRecognizer.view];
|
||||
NSInteger movement = translation.x - self.draggingPoint.x;
|
||||
|
||||
static Menu lastMenu;
|
||||
Menu menu = (self.horizontalLocation > 0 || (self.horizontalLocation == 0 && movement > 0) ) ? MenuLeft : MenuRight;
|
||||
|
||||
Menu currentMenu;
|
||||
|
||||
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 (![self isMenuOpen])
|
||||
[self prepareMenuForReveal:menu forcePrepare:YES];
|
||||
|
||||
self.draggingPoint = translation;
|
||||
lastMenu = menu;
|
||||
}
|
||||
else if (aPanRecognizer.state == UIGestureRecognizerStateChanged)
|
||||
{
|
||||
static CGFloat lastHorizontalLocation = 0;
|
||||
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;
|
||||
|
||||
newHorizontalLocation += movement;
|
||||
|
||||
if (newHorizontalLocation >= self.minXForDragging && newHorizontalLocation <= self.maxXForDragging)
|
||||
[self moveHorizontallyToLocation:newHorizontalLocation];
|
||||
|
||||
self.draggingPoint = translation;
|
||||
lastMenu = menu;
|
||||
}
|
||||
else if (aPanRecognizer.state == UIGestureRecognizerStateEnded)
|
||||
{
|
||||
|
|
@ -555,11 +781,11 @@ static SlideNavigationController *singletonInstance;
|
|||
if (currentX > 0)
|
||||
{
|
||||
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
|
||||
{
|
||||
[self closeMenuWithDuration:MENU_QUICK_SLIDE_ANIMATION_DURATION andCompletion:nil];
|
||||
[self closeMenuWithCompletion:nil];
|
||||
}
|
||||
}
|
||||
// Moving Left
|
||||
|
|
@ -567,12 +793,12 @@ static SlideNavigationController *singletonInstance;
|
|||
{
|
||||
if (currentX > 0)
|
||||
{
|
||||
[self closeMenuWithDuration:MENU_QUICK_SLIDE_ANIMATION_DURATION andCompletion:nil];
|
||||
[self closeMenuWithCompletion:nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
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)
|
||||
[self closeMenuWithCompletion:nil];
|
||||
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)
|
||||
{
|
||||
_panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)];
|
||||
_panRecognizer.delegate = self;
|
||||
}
|
||||
|
||||
return _panRecognizer;
|
||||
|
|
@ -651,4 +876,18 @@ static SlideNavigationController *singletonInstance;
|
|||
_menuRevealAnimator = menuRevealAnimator;
|
||||
}
|
||||
|
||||
- (void)setLeftMenu:(UIViewController *)leftMenu
|
||||
{
|
||||
[_leftMenu.view removeFromSuperview];
|
||||
|
||||
_leftMenu = leftMenu;
|
||||
}
|
||||
|
||||
- (void)setRightMenu:(UIViewController *)rightMenu
|
||||
{
|
||||
[_rightMenu.view removeFromSuperview];
|
||||
|
||||
_rightMenu = rightMenu;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -1,476 +1,257 @@
|
|||
<?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>
|
||||
<deployment defaultVersion="1536" identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3746"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Slide Navigation Controller-->
|
||||
<scene sceneID="soL-QO-MBT">
|
||||
<!--Left Menu View Controller-->
|
||||
<scene sceneID="ydh-RY-veO">
|
||||
<objects>
|
||||
<navigationController definesPresentationContext="YES" id="Oen-6g-7tl" customClass="SlideNavigationController" 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">
|
||||
<viewController storyboardIdentifier="LeftMenuViewController" id="kgk-ix-az4" customClass="LeftMenuViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="9ox-vT-8ZO"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="2jO-Y4-dwb"/>
|
||||
<viewControllerLayoutGuide type="top" id="Gne-ia-o3b"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="E2D-Nd-pgy"/>
|
||||
</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"/>
|
||||
<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="MXr-BW-Kqi">
|
||||
<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">
|
||||
<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="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"/>
|
||||
<inset key="insetFor6xAndEarlier" minX="0.0" minY="20" maxX="0.0" maxY="0.0"/>
|
||||
<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"/>
|
||||
<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"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<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"/>
|
||||
<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>
|
||||
</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"/>
|
||||
<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="13t-T3-CP0" id="Gup-GY-FX6"/>
|
||||
<outlet property="delegate" destination="13t-T3-CP0" id="tSy-QF-Ras"/>
|
||||
<outlet property="dataSource" destination="kgk-ix-az4" id="KPu-Yn-RVq"/>
|
||||
<outlet property="delegate" destination="kgk-ix-az4" id="Q2S-FC-4x0"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="tableView" destination="4iS-Z1-naI" id="wIU-s8-EUP"/>
|
||||
</connections>
|
||||
</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>
|
||||
<point key="canvasLocation" x="-497" y="147"/>
|
||||
<point key="canvasLocation" x="-463" y="-315"/>
|
||||
</scene>
|
||||
<!--Slide Navigation Controller-->
|
||||
<scene sceneID="dVS-E2-Auy">
|
||||
<scene sceneID="ai6-Og-ggg">
|
||||
<objects>
|
||||
<navigationController definesPresentationContext="YES" id="b3D-cb-lLJ" customClass="SlideNavigationController" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="9AS-bj-VL4">
|
||||
<navigationController definesPresentationContext="YES" id="fvh-p2-tUE" customClass="SlideNavigationController" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="s4t-1u-9Dt">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<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>
|
||||
</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>
|
||||
<point key="canvasLocation" x="11" y="49"/>
|
||||
</scene>
|
||||
<!--Home View Controller - Home-->
|
||||
<scene sceneID="WEc-Rd-kK2">
|
||||
<scene sceneID="jok-Y9-nsU">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="HomeViewController" id="rkh-dZ-TLU" customClass="HomeViewController" sceneMemberID="viewController">
|
||||
<viewController storyboardIdentifier="HomeViewController" id="V7R-1j-qkE" customClass="HomeViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="qkm-Wn-vtw"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="oEO-Ia-AP9"/>
|
||||
<viewControllerLayoutGuide type="top" id="4h0-Bw-69Q"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="XXp-Rh-R4b"/>
|
||||
</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"/>
|
||||
<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="hlm-5i-YGh">
|
||||
<rect key="frame" x="75" y="277" width="133" height="30"/>
|
||||
<state key="normal" title="Push Another Page">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<segue destination="QLX-M1-3U4" kind="push" identifier="NoMenuSegue" id="Zvw-UE-EYe"/>
|
||||
</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="OWm-Zb-rgF">
|
||||
<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>
|
||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bn4-DT-fWK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YJC-mw-uA1">
|
||||
<rect key="frame" x="3" y="14" width="76" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Push">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<segue destination="4Fv-uA-OED" kind="push" id="iN9-Ny-5e8"/>
|
||||
</connections>
|
||||
</button>
|
||||
<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">
|
||||
<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>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</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>
|
||||
<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>
|
||||
<point key="canvasLocation" x="1040" y="-222"/>
|
||||
</scene>
|
||||
<!--View Controller - No Menu-->
|
||||
<scene sceneID="D7t-tx-sIN">
|
||||
<scene sceneID="vPh-ap-UX3">
|
||||
<objects>
|
||||
<viewController id="QLX-M1-3U4" sceneMemberID="viewController">
|
||||
<viewController id="4Fv-uA-OED" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="kRH-2C-Kwt"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="bfU-Nh-ees"/>
|
||||
<viewControllerLayoutGuide type="top" id="pmx-IK-i2u"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="cGA-iU-ukc"/>
|
||||
</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"/>
|
||||
<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="Xia-55-WbU">
|
||||
<barButtonItem key="rightBarButtonItem" id="8HJ-zX-KqP">
|
||||
<segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="71c-sD-0YC">
|
||||
<rect key="frame" x="209" y="6" width="95" height="32"/>
|
||||
<navigationItem key="navigationItem" title="No Menu" id="vf8-FK-eVo">
|
||||
<barButtonItem key="rightBarButtonItem" id="wha-vg-KIJ">
|
||||
<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="8" width="95" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Seg 1"/>
|
||||
|
|
@ -480,113 +261,116 @@
|
|||
</barButtonItem>
|
||||
</navigationItem>
|
||||
</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>
|
||||
<point key="canvasLocation" x="1503" y="-222"/>
|
||||
</scene>
|
||||
<!--View Controller - Login-->
|
||||
<scene sceneID="fwq-Od-Rmh">
|
||||
<scene sceneID="6xM-VD-IjZ">
|
||||
<objects>
|
||||
<viewController id="a5s-P3-RMU" sceneMemberID="viewController">
|
||||
<viewController id="WYD-AW-Tad" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="ho4-yJ-Gjb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="82I-OL-Cak"/>
|
||||
<viewControllerLayoutGuide type="top" id="iw1-SG-CVt"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="r3s-gZ-c3b"/>
|
||||
</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"/>
|
||||
<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="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"/>
|
||||
<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="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"/>
|
||||
<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="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"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Login">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<segue destination="rkh-dZ-TLU" kind="push" id="Of3-Mq-l1H"/>
|
||||
<segue destination="V7R-1j-qkE" kind="push" id="gTa-tR-axC"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" title="Login" id="abg-kd-gNg"/>
|
||||
<navigationItem key="navigationItem" title="Login" id="eie-6f-3Sp"/>
|
||||
<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>
|
||||
</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>
|
||||
<point key="canvasLocation" x="499" y="49"/>
|
||||
</scene>
|
||||
<!--Profile View Controller - Profile-->
|
||||
<scene sceneID="AWW-D1-CVj">
|
||||
<scene sceneID="vdg-mb-ElN">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="ProfileViewController" id="4Of-A0-9eP" customClass="ProfileViewController" sceneMemberID="viewController">
|
||||
<viewController storyboardIdentifier="ProfileViewController" id="7sy-BR-PJy" customClass="ProfileViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Ynr-6t-ms6"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="EJ5-Dd-vmM"/>
|
||||
<viewControllerLayoutGuide type="top" id="VZj-K9-2cU"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="rY3-Co-AMw"/>
|
||||
</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"/>
|
||||
<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="lCj-OK-Eoc">
|
||||
<rect key="frame" x="26" y="321" width="153" height="30"/>
|
||||
<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="92" y="178" width="153" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Push To Another PAge">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<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>
|
||||
</button>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="zQY-W8-4vS">
|
||||
<rect key="frame" x="26" y="171" width="151" height="29"/>
|
||||
<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="85" y="111" width="151" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Male"/>
|
||||
<segment title="Female"/>
|
||||
<segment title="random"/>
|
||||
<segment title="?"/>
|
||||
</segments>
|
||||
</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">
|
||||
<rect key="frame" x="37" y="482" width="216" height="34"/>
|
||||
<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="260" width="216" height="34"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" title="Profile" id="kLC-3K-WHD"/>
|
||||
<navigationItem key="navigationItem" title="Profile" id="rim-Qb-Z9f"/>
|
||||
</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>
|
||||
<point key="canvasLocation" x="1044" y="437"/>
|
||||
</scene>
|
||||
<!--Friends View Controller-->
|
||||
<scene sceneID="Lvi-cl-Er6">
|
||||
<!--Friends View Controller - Friends-->
|
||||
<scene sceneID="nFD-Fx-IfT">
|
||||
<objects>
|
||||
<tableViewController storyboardIdentifier="FriendsViewController" id="rvx-wK-8R4" 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">
|
||||
<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="mf9-Md-XTT">
|
||||
<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"/>
|
||||
<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">
|
||||
<rect key="frame" x="0.0" y="22" width="768" height="44"/>
|
||||
<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="86" width="768" height="44"/>
|
||||
<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"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<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"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
|
|
@ -596,34 +380,35 @@
|
|||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<segue destination="J3s-bt-BQI" kind="push" id="Z7w-3t-Oem"/>
|
||||
<segue destination="ib7-4p-iWa" kind="push" id="pcr-1g-E2h"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<sections/>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="rvx-wK-8R4" id="SYf-Ty-RO1"/>
|
||||
<outlet property="delegate" destination="rvx-wK-8R4" id="OsZ-U9-TTD"/>
|
||||
<outlet property="dataSource" destination="02e-ia-H3p" id="tRf-va-vVe"/>
|
||||
<outlet property="delegate" destination="02e-ia-H3p" id="3Bt-bh-0FR"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||
</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>
|
||||
<point key="canvasLocation" x="1042" y="1101"/>
|
||||
</scene>
|
||||
<!--View Controller - Friend Info-->
|
||||
<scene sceneID="QjK-zE-zoe">
|
||||
<!--View Controller - Friends-->
|
||||
<scene sceneID="O22-q0-G0O">
|
||||
<objects>
|
||||
<viewController id="J3s-bt-BQI" sceneMemberID="viewController">
|
||||
<viewController title="Friends" id="ib7-4p-iWa" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="CQC-GI-Vmb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="HB6-Zz-68j"/>
|
||||
<viewControllerLayoutGuide type="top" id="PUj-JX-Dzd"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="aX0-ol-52a"/>
|
||||
</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"/>
|
||||
<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="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"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
|
|
@ -633,31 +418,87 @@
|
|||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</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>
|
||||
<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>
|
||||
<point key="canvasLocation" x="1503" y="1100"/>
|
||||
</scene>
|
||||
<!--Profile Detail View Controller - Right Menu Only-->
|
||||
<scene sceneID="slh-EU-zMF">
|
||||
<scene sceneID="rfM-Ud-q6T">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="ProfileDetailViewController" id="9qP-Rw-akW" customClass="ProfileDetailViewController" sceneMemberID="viewController">
|
||||
<viewController storyboardIdentifier="ProfileDetailViewController" id="QUW-hd-dmf" customClass="ProfileDetailViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="vOS-Ms-0qV"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="zbH-W7-ltS"/>
|
||||
<viewControllerLayoutGuide type="top" id="Cih-DQ-MER"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="fhz-Is-192"/>
|
||||
</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"/>
|
||||
<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="L0A-q9-5dN"/>
|
||||
<navigationItem key="navigationItem" title="Right Menu Only" id="DCN-Kk-ZXw"/>
|
||||
</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>
|
||||
<point key="canvasLocation" x="1503" y="437"/>
|
||||
</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>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar"/>
|
||||
|
|
|
|||
|
|
@ -1,44 +1,26 @@
|
|||
<?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>
|
||||
<deployment defaultVersion="1536" identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3746"/>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Menu View Controller-->
|
||||
<!--Left Menu View Controller-->
|
||||
<scene sceneID="BMU-5d-Lvz">
|
||||
<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">
|
||||
<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="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"/>
|
||||
<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>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
|
|
@ -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">
|
||||
<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"/>
|
||||
<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.0039215688593685627" green="0.29803922772407532" blue="0.39607846736907959" alpha="1" colorSpace="deviceRGB"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
|
|
@ -65,10 +47,13 @@
|
|||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="tableView" destination="T7T-Ke-Ksy" id="fWu-ZN-ex0"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="uR4-tD-X8j" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-419" y="49"/>
|
||||
<point key="canvasLocation" x="-463" y="-315"/>
|
||||
</scene>
|
||||
<!--Slide Navigation Controller-->
|
||||
<scene sceneID="cQY-wH-O5O">
|
||||
|
|
@ -85,7 +70,7 @@
|
|||
</objects>
|
||||
<point key="canvasLocation" x="11" y="49"/>
|
||||
</scene>
|
||||
<!--Home View Controller - Home-->
|
||||
<!--Home-->
|
||||
<scene sceneID="7Hl-22-JcN">
|
||||
<objects>
|
||||
<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"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="0tp-7h-5YK">
|
||||
<rect key="frame" x="75" y="150" width="133" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Push Another Page">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<segue destination="Tha-f2-JWx" kind="push" identifier="NoMenuSegue" id="jGs-V7-na4"/>
|
||||
</connections>
|
||||
</button>
|
||||
<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">
|
||||
<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>
|
||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="fw2-L4-XnY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="K2W-o4-sG6">
|
||||
<rect key="frame" x="3" y="14" width="76" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Push">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<segue destination="Tha-f2-JWx" kind="push" id="zQY-ZW-dzI"/>
|
||||
</connections>
|
||||
</button>
|
||||
<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">
|
||||
<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" 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>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<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>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Wf8-rc-ajb" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1040" y="-222"/>
|
||||
</scene>
|
||||
<!--View Controller - No Menu-->
|
||||
<!--No Menu-->
|
||||
<scene sceneID="b5b-is-lY2">
|
||||
<objects>
|
||||
<viewController id="Tha-f2-JWx" sceneMemberID="viewController">
|
||||
|
|
@ -145,7 +253,7 @@
|
|||
</objects>
|
||||
<point key="canvasLocation" x="1503" y="-222"/>
|
||||
</scene>
|
||||
<!--View Controller - Login-->
|
||||
<!--Login-->
|
||||
<scene sceneID="fe8-Xu-DEa">
|
||||
<objects>
|
||||
<viewController id="Rnc-YT-XEu" sceneMemberID="viewController">
|
||||
|
|
@ -181,13 +289,14 @@
|
|||
<navigationItem key="navigationItem" title="Login" id="huN-S6-yGa"/>
|
||||
<connections>
|
||||
<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>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="QC9-GK-F3v" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="499" y="49"/>
|
||||
</scene>
|
||||
<!--Profile View Controller - Profile-->
|
||||
<!--Profile-->
|
||||
<scene sceneID="xeE-nX-pb6">
|
||||
<objects>
|
||||
<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"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Male"/>
|
||||
<segment title="Female"/>
|
||||
<segment title="random"/>
|
||||
<segment title="?"/>
|
||||
</segments>
|
||||
</segmentedControl>
|
||||
<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>
|
||||
<point key="canvasLocation" x="1044" y="437"/>
|
||||
</scene>
|
||||
<!--Friends View Controller-->
|
||||
<!--Friends-->
|
||||
<scene sceneID="Hbs-BS-FvF">
|
||||
<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">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
|
|
@ -252,7 +361,7 @@
|
|||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<segue destination="yDw-XY-MRH" kind="push" id="WHu-9H-qWI"/>
|
||||
<segue destination="yDw-XY-MRH" kind="push" id="f0p-1d-Bw3"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
|
|
@ -262,15 +371,19 @@
|
|||
<outlet property="delegate" destination="qY1-Jo-UbZ" id="FT7-ey-Dka"/>
|
||||
</connections>
|
||||
</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>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="TeQ-ZL-OLP" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1042" y="1101"/>
|
||||
</scene>
|
||||
<!--View Controller - Friend Info-->
|
||||
<!--Friends-->
|
||||
<scene sceneID="yJW-sY-3g9">
|
||||
<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">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
|
|
@ -286,12 +399,13 @@
|
|||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" title="Friend Info" id="ZvF-si-2WZ"/>
|
||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="5rh-jR-0iE" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1503" y="1100"/>
|
||||
</scene>
|
||||
<!--Profile Detail View Controller - Right Menu Only-->
|
||||
<!--Right Menu Only-->
|
||||
<scene sceneID="w1a-xD-Zgv">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="ProfileDetailViewController" id="BLR-mt-TZ9" customClass="ProfileDetailViewController" sceneMemberID="viewController">
|
||||
|
|
@ -306,10 +420,61 @@
|
|||
</objects>
|
||||
<point key="canvasLocation" x="1503" y="437"/>
|
||||
</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>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination" type="retina4"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
||||
</document>
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
// Copyright (c) 2013 Aryan Ghassemi. All rights reserved.
|
||||
//
|
||||
|
||||
#import <SenTestingKit/SenTestingKit.h>
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
@interface SlideMenuTests : SenTestCase
|
||||
@interface SlideMenuTests : XCTestCase
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
- (void)testExample
|
||||
{
|
||||
STFail(@"Unit tests are not implemented yet in SlideMenuTests");
|
||||
XCTFail(@"Unit tests are not implemented yet in SlideMenuTests");
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'iOS-Slide-Menu'
|
||||
s.version = '1.3.0'
|
||||
s.version = '1.4.6'
|
||||
s.summary = 'A Slide Menu for iOS'
|
||||
s.homepage = 'https://github.com/aryaxt/iOS-Slide-Menu'
|
||||
s.license = {
|
||||
:type => 'MIT',
|
||||
:file => 'License.txt'
|
||||
}
|
||||
s.author = {'Aryan Gh' => 'https://github.com/aryaxt/iOS-Slide-Menu'}
|
||||
s.source = {:git => 'https://github.com/aryaxt/iOS-Slide-Menu.git', :tag => '1.3.0'}
|
||||
s.author = {'Aryan Ghassemi' => 'https://github.com/aryaxt/iOS-Slide-Menu'}
|
||||
s.source = {:git => 'https://github.com/aryaxt/iOS-Slide-Menu.git', :tag => '1.4.6'}
|
||||
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.framework = 'Foundation', 'UIKit'
|
||||
s.requires_arc = true
|
||||
|
|
|
|||
Loading…
Reference in New Issue