msm

MSMatrixController

A component to organize your view controllers in a gesture-based 2D matrix.

Showing:

Popularity

Downloads/wk

0

GitHub Stars

136

Maintenance

Last Commit

8yrs ago

Contributors

3

Package

Dependencies

0

License

MIT

Categories

Readme

MSMatrixController

A component to organize your view controllers in a gesture-based 2D matrix.

image

Get it ready

The best way to install it inside your project is with CocoaPods: simply add

pod 'MSMatrixController'

inside your Podfile.
If for some mysterious reason you are not using CocoaPods, copy the folder MSMatrixController inside your Xcode project.

Then, import MSMatrixController.h inside your prefix or application delegate.

How it works

Organize your view controllers inside a Matrix, specifying for each of them its row and column. Then add them inside an instance of MSMatrixController.

image

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  UIStoryboard *currentStoryboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil];

  UIViewController *initialViewController = self.window.rootViewController;
  MSMatrixMasterViewController *matrixMasterViewController = [[MSMatrixMasterViewController alloc] initWithFrame:initialViewController.view.frame];

  UIViewController *position00ViewController = [currentStoryboard instantiateViewControllerWithIdentifier:@"position00"];
  position00ViewController.row = 0;
  position00ViewController.col = 0;

  UIViewController *position01ViewController = [currentStoryboard instantiateViewControllerWithIdentifier:@"position01"];
  position01ViewController.row = 0;
  position01ViewController.col = 1;
  
  UIViewController *position11ViewController = . . . . 

  NSArray *controllers = @[position00ViewController, position01ViewController, position11ViewController, position12ViewController,
position21ViewController, position22ViewController, position23ViewController, position24ViewController, position14ViewController];

  [matrixMasterViewController setControllers:controllers];

  self.window.rootViewController = matrixMasterViewController;
  [self.window makeKeyAndVisible];
  return YES;
}

Features

For each controller, you can access its neighborhood:

controller.leftViewController
controller.rightViewController
controller.topViewController
controller.bottomViewController

and the matrix master controller:

controller.matrixViewController

The default way to navigate the matrix of controllers is with swipe gestures, but you can move through them programmatically as well.

- (void)moveLeftAnimated:(BOOL)animated;
- (void)moveRightAnimated:(BOOL)animated;
- (void)moveUpAnimated:(BOOL)animated;
- (void)moveDownAnimated:(BOOL)animated;
- (void)moveLeftAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;
- (void)moveRightAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;
- (void)moveUpAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;
- (void)moveDownAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;

Callbacks and MSMatrixControllerDelegate

At this moment, MSMatrixController does use the default UIKit callbacks when a view appears/disappears:

- (void)viewDidAppear:(BOOL)animated;    
- (void)viewDidDisappear:(BOOL)animated;

Also, it declares the delegate MSMatrixControllerDelegate:

- (void)willMoveToViewController:(UIViewController *)viewController atPosition:(Position)position;
- (void)didMoveToViewController:(UIViewController *)viewController atPosition:(Position)position;

Credits

Freely inspired by Circle and MBSpacialViewController

Contact

Marco Sero

License

MSMatrixController is available under the MIT license. See the LICENSE file for more info.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100