1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #import "RNNNavigationOptions.h"
- #import <React/RCTConvert.h>
- #import "RNNNavigationController.h"
- #import "RNNTabBarController.h"
- #import "RNNTopBarOptions.h"
- #import "RNNSideMenuController.h"
- #import "RNNRootViewController.h"
- #import "RNNSplitViewController.h"
- #import "RNNNavigationButtons.h"
-
- @implementation RNNNavigationOptions
-
- - (RNNNavigationOptions *)combineWithOptions:(RNNOptions *)options {
- RNNNavigationOptions *navigationOptions = [[RNNNavigationOptions alloc] initWithDict:@{}];
- [navigationOptions mergeOptions:self overrideOptions:YES];
- [navigationOptions mergeOptions:options overrideOptions:YES];
-
- return navigationOptions;
- }
-
- - (void)applyOn:(UIViewController *)viewController {
- [self.topBar applyOn:viewController];
- [self.bottomTabs applyOn:viewController];
- [self.topTab applyOn:viewController];
- [self.bottomTab applyOn:viewController];
- [self.sideMenu applyOn:viewController];
- [self.overlay applyOn:viewController];
- [self.statusBar applyOn:viewController];
- [self.layout applyOn:viewController];
- [self applyOtherOptions:self on:viewController];
- }
-
- - (void)applyOnNavigationController:(UINavigationController *)navigationController {
- [self.topBar applyOnNavigationController:navigationController];
- [self.statusBar applyOn:navigationController];
- [self.layout applyOn:navigationController];
- [self.bottomTab applyOn:navigationController];
- [self applyOtherOptions:self onNavigationController:navigationController];
- }
-
- - (void)applyOnTabBarController:(UITabBarController *)tabBarController {
- [self.bottomTabs applyOnTabBarController:tabBarController];
- }
-
- - (void)applyOtherOptions:(RNNNavigationOptions *)options onNavigationController:(UINavigationController*)navigationController {
- if (options.popGesture) {
- navigationController.interactivePopGestureRecognizer.enabled = [options.popGesture boolValue];
- }
-
- if (options.rootBackgroundImage) {
- UIImageView* backgroundImageView = (navigationController.view.subviews.count > 0) ? navigationController.view.subviews[0] : nil;
- if (![backgroundImageView isKindOfClass:[UIImageView class]]) {
- backgroundImageView = [[UIImageView alloc] initWithFrame:navigationController.view.bounds];
- [navigationController.view insertSubview:backgroundImageView atIndex:0];
- }
-
- backgroundImageView.layer.masksToBounds = YES;
- backgroundImageView.image = [options.rootBackgroundImage isKindOfClass:[UIImage class]] ? (UIImage*)options.rootBackgroundImage : [RCTConvert UIImage:options.rootBackgroundImage];
- [backgroundImageView setContentMode:UIViewContentModeScaleAspectFill];
- }
- }
-
- - (void)applyOtherOptions:(RNNNavigationOptions *)options on:(UIViewController*)viewController {
- if (options.backgroundImage) {
- UIImageView* backgroundImageView = (viewController.view.subviews.count > 0) ? viewController.view.subviews[0] : nil;
- if (![backgroundImageView isKindOfClass:[UIImageView class]]) {
- backgroundImageView = [[UIImageView alloc] initWithFrame:viewController.view.bounds];
- [viewController.view insertSubview:backgroundImageView atIndex:0];
- }
-
- backgroundImageView.layer.masksToBounds = YES;
- backgroundImageView.image = [options.backgroundImage isKindOfClass:[UIImage class]] ? (UIImage*)options.backgroundImage : [RCTConvert UIImage:options.backgroundImage];
- [backgroundImageView setContentMode:UIViewContentModeScaleAspectFill];
- }
-
- if (options.modalPresentationStyle) {
- viewController.modalPresentationStyle = [RCTConvert UIModalPresentationStyle:options.modalPresentationStyle];
- [viewController.view setBackgroundColor:[UIColor clearColor]];
- }
- if (options.modalTransitionStyle) {
- viewController.modalTransitionStyle = [RCTConvert UIModalTransitionStyle:options.modalTransitionStyle];
- }
- }
-
- @end
|