Browse Source

Support storyboards in the splash screen (#3459)

Johan Flint 6 years ago
parent
commit
b16d14c90b
1 changed files with 13 additions and 12 deletions
  1. 13
    12
      lib/ios/RNNSplashScreen.m

+ 13
- 12
lib/ios/RNNSplashScreen.m View File

10
 	UIApplication.sharedApplication.delegate.window.backgroundColor = [UIColor whiteColor];
10
 	UIApplication.sharedApplication.delegate.window.backgroundColor = [UIColor whiteColor];
11
 	
11
 	
12
 	CGRect screenBounds = [UIScreen mainScreen].bounds;
12
 	CGRect screenBounds = [UIScreen mainScreen].bounds;
13
-	UIView *splashView = nil;
13
+	UIViewController *viewController = nil;
14
 	
14
 	
15
 	NSString* launchStoryBoard = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchStoryboardName"];
15
 	NSString* launchStoryBoard = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchStoryboardName"];
16
 	if (launchStoryBoard != nil) {//load the splash from the storyboard that's defined in the info.plist as the LaunchScreen
16
 	if (launchStoryBoard != nil) {//load the splash from the storyboard that's defined in the info.plist as the LaunchScreen
17
 		@try
17
 		@try
18
 		{
18
 		{
19
-			splashView = [[NSBundle mainBundle] loadNibNamed:launchStoryBoard owner:self options:nil][0];
19
+			UIStoryboard *storyboard = [UIStoryboard storyboardWithName:launchStoryBoard bundle:nil];
20
+			viewController = [storyboard instantiateInitialViewController];
21
+		}
22
+		@catch(NSException *e)
23
+		{
24
+			UIView *splashView = [[NSBundle mainBundle] loadNibNamed:launchStoryBoard owner:self options:nil][0];
20
 			if (splashView != nil)
25
 			if (splashView != nil)
21
 			{
26
 			{
22
 				splashView.frame = CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.height);
27
 				splashView.frame = CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.height);
28
+				viewController = [[RNNSplashScreen alloc] init];
29
+				viewController.view = splashView;
23
 			}
30
 			}
24
 		}
31
 		}
25
-		@catch(NSException *e)
26
-		{
27
-			splashView = nil;
28
-		}
29
 	}
32
 	}
30
 	else {//load the splash from the DEfault image or from LaunchImage in the xcassets
33
 	else {//load the splash from the DEfault image or from LaunchImage in the xcassets
31
 		CGFloat screenHeight = screenBounds.size.height;
34
 		CGFloat screenHeight = screenBounds.size.height;
60
 		}
63
 		}
61
 		
64
 		
62
 		if (image != nil) {
65
 		if (image != nil) {
63
-			splashView = [[UIImageView alloc] initWithImage:image];
66
+			viewController = [[RNNSplashScreen alloc] init];
67
+			viewController.view = [[UIImageView alloc] initWithImage:image];
64
 		}
68
 		}
65
 	}
69
 	}
66
 	
70
 	
67
-	if (splashView != nil) {
68
-		RNNSplashScreen *splashVC = [[RNNSplashScreen alloc] init];
69
-		splashVC.view = splashView;
70
-		
71
+	if (viewController != nil) {
71
 		id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;
72
 		id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;
72
-		appDelegate.window.rootViewController = splashVC;
73
+		appDelegate.window.rootViewController = viewController;
73
 		[appDelegate.window makeKeyAndVisible];
74
 		[appDelegate.window makeKeyAndVisible];
74
 	}
75
 	}
75
 }
76
 }