{"id":18270525,"url":"https://github.com/MarcoSero/MSMatrixController","last_synced_at":"2025-04-05T01:30:40.092Z","repository":{"id":7765459,"uuid":"9133860","full_name":"MarcoSero/MSMatrixController","owner":"MarcoSero","description":"A component to organize your view controllers in a gesture-based 2D matrix.","archived":false,"fork":false,"pushed_at":"2013-06-02T09:27:54.000Z","size":661,"stargazers_count":132,"open_issues_count":3,"forks_count":15,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-27T00:18:14.597Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.marcosero.com","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarcoSero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-03-31T18:10:34.000Z","updated_at":"2025-03-04T11:17:19.000Z","dependencies_parsed_at":"2022-09-13T14:01:02.493Z","dependency_job_id":null,"html_url":"https://github.com/MarcoSero/MSMatrixController","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoSero%2FMSMatrixController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoSero%2FMSMatrixController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoSero%2FMSMatrixController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcoSero%2FMSMatrixController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarcoSero","download_url":"https://codeload.github.com/MarcoSero/MSMatrixController/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276022,"owners_count":20912285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T11:38:41.712Z","updated_at":"2025-04-05T01:30:39.634Z","avatar_url":"https://github.com/MarcoSero.png","language":"Objective-C","readme":"# MSMatrixController\nA component to organize your view controllers in a gesture-based 2D matrix.\n\n![image](MSMatrixControllerDemo/animated_matrix.gif)\n\n## Get it ready\n\nThe best way to install it inside your project is with [CocoaPods](http://cocoapods.org/): simply add\n\n    pod 'MSMatrixController'\n\ninside your Podfile.   \nIf for some mysterious reason you are not using CocoaPods, copy the folder `MSMatrixController` inside your Xcode project.\n\nThen, import `MSMatrixController.h` inside your prefix or application delegate. \n\n## How it works\n\nOrganize your view controllers inside a Matrix, specifying for each of them its row and column. Then add them inside an instance of MSMatrixController.\n\n![image](MSMatrixControllerDemo/matrix.jpg)\n\n    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n    {\n      UIStoryboard *currentStoryboard = [UIStoryboard storyboardWithName:@\"iPhone\" bundle:nil];\n\n      UIViewController *initialViewController = self.window.rootViewController;\n      MSMatrixMasterViewController *matrixMasterViewController = [[MSMatrixMasterViewController alloc] initWithFrame:initialViewController.view.frame];\n\n      UIViewController *position00ViewController = [currentStoryboard instantiateViewControllerWithIdentifier:@\"position00\"];\n      position00ViewController.row = 0;\n      position00ViewController.col = 0;\n\n      UIViewController *position01ViewController = [currentStoryboard instantiateViewControllerWithIdentifier:@\"position01\"];\n      position01ViewController.row = 0;\n      position01ViewController.col = 1;\n      \n      UIViewController *position11ViewController = . . . . \n\n      NSArray *controllers = @[position00ViewController, position01ViewController, position11ViewController, position12ViewController,\n    position21ViewController, position22ViewController, position23ViewController, position24ViewController, position14ViewController];\n    \n      [matrixMasterViewController setControllers:controllers];\n\n      self.window.rootViewController = matrixMasterViewController;\n      [self.window makeKeyAndVisible];\n      return YES;\n    }\n\n## Features  \n    \nFor each controller, you can access its neighborhood:\n\n    controller.leftViewController\n    controller.rightViewController\n    controller.topViewController\n    controller.bottomViewController\n    \nand the matrix master controller:\n\n    controller.matrixViewController\n    \nThe default way to navigate the matrix of controllers is with swipe gestures, but you can move through them programmatically as well.\n\n    - (void)moveLeftAnimated:(BOOL)animated;\n    - (void)moveRightAnimated:(BOOL)animated;\n    - (void)moveUpAnimated:(BOOL)animated;\n    - (void)moveDownAnimated:(BOOL)animated;\n    - (void)moveLeftAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;\n    - (void)moveRightAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;\n    - (void)moveUpAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;\n    - (void)moveDownAnimated:(BOOL)animated withCompletion:(void (^)(void))completion;\n \n## Callbacks and MSMatrixControllerDelegate\n\nAt this moment, MSMatrixController does use the default UIKit callbacks when a view appears/disappears:\n\n    - (void)viewDidAppear:(BOOL)animated;    \n    - (void)viewDidDisappear:(BOOL)animated;\n\nAlso, it declares the delegate `MSMatrixControllerDelegate`:\n\n    - (void)willMoveToViewController:(UIViewController *)viewController atPosition:(Position)position;\n    - (void)didMoveToViewController:(UIViewController *)viewController atPosition:(Position)position;\n\n## Credits\n\nFreely inspired by [Circle](https://itunes.apple.com/gb/app/circle-whos-around-you/id488720081?mt=8) and [MBSpacialViewController](https://github.com/mobitar/MBSpacialViewController)\n\n## Contact\n\nMarco Sero\n\n- http://www.marcosero.com\n- http://twitter.com/marcosero \n- marco@marcosero.com\n\n## License\n\nMSMatrixController is available under the MIT license. See the LICENSE file for more info.\n\n","funding_links":[],"categories":["etc"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarcoSero%2FMSMatrixController","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMarcoSero%2FMSMatrixController","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarcoSero%2FMSMatrixController/lists"}