• Stars
    star
    133
  • Rank 272,600 (Top 6 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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.

More Repositories

1

MSSlideNavigationController

Facebook like UINavigationController to slide back to previous view controller.
Objective-C
160
star
2

EditorConfig-Xcode

Plugin to add EditorConfig support to Xcode
Objective-C
117
star
3

HackerNews

An open source, beautifully designed Hacker News client for iPhone
HTML
111
star
4

Nimble

Core Data and iCloud made nimble and fast
Objective-C
98
star
5

MSNavigationSwipeController

Subclass of UINavigationController to add 'swipe right to go back' gesture recognizer like most apps (Facebook, Tweetbot) already do.
Objective-C
72
star
6

MSMapClustering

A subclass of MKMapView to cluster annotations
Objective-C
52
star
7

Swiftener

Collection of extensions, operators and utilities to add syntactic sugar to Swift
Swift
20
star
8

Norvigs-Spelling-Corrector

A Haskell implementation of Peter Norvig's spelling corrector
Haskell
15
star
9

PolyglotApp

A Polyglot iOS Application
Objective-C
11
star
10

CKComponentFadeTransition

A ComponentKit extension to add fade transitions.
Objective-C++
8
star
11

dotfiles

My dotfiles
Vim Script
7
star
12

Algorithms

Small collection of simple algorithms written in Swift
Swift
6
star
13

SpringBoard-iOS-5.0

iOS 5.0 headers Springboard.app
Objective-C
5
star
14

MSBlockSegues

Block-based Storyboard Segues
Objective-C
4
star
15

userl

A CLI to get the most used languages of a GitHub user
Ruby
3
star
16

lifeofadev.eu

Ruby on Rails CMS that I use to run my blog
JavaScript
2
star
17

StatusBoard-BitBucket

Ruby
2
star
18

toSync

A simple Java program to synchronize folders
Java
2
star
19

SnoozeOrStop

iOS Tweak. Adds the button to stop alarm in Lockscreen or stops it with lock button
Objective-C
2
star
20

gruber

A not very functional (yet) Markdown parser written in Haskell
Haskell
1
star
21

Mail-my-IP

A program that notifies the change of the public IP via email
Java
1
star
22

msChat

A simple Java-based chat for educational purposes
Java
1
star