一个视图控制器组织组件,基于手势的 2D 矩阵。
将 Xcode 项目的 MSMatrixController
文件夹复制到项目中。
在您的前缀或应用代理中导入 MSMatrixController.h
。
在一个矩阵内组织您的视图控制器,为每个控制器指定其行和列。然后在 MSMatrixController 的一个实例中添加它们。
- (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 = cartesianMasterViewController;
[self.window makeKeyAndVisible];
return YES;
}
对于每个控制器,您可以访问其邻域
controller.leftViewController
controller.rightViewController
controller.topViewController
controller.bottomViewController
和矩阵主控制器
controller.matrixViewController
导航控制器的矩阵默认方式是通过滑动手势,但也可以通过编程移动。
- (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;
目前,MSMatrixController 在视图出现/消失时使用默认的 UIKit 回调
- (void)viewDidAppear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
还声明了代理 MSMatrixControllerDelegate
- (void)willMoveToViewController:(UIViewController *)viewController atPosition:(Position)position;
- (void)didMoveToViewController:(UIViewController *)viewController atPosition:(Position)position;
灵感来源于 Circle 和 MBSpacialViewController
Marco Sero
MSMatrixController 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。