Browse Source

statusBarHidden support for ios (#1543)

Aaron Greenwald 7 years ago
parent
commit
e385c4fb6e

+ 10
- 3
lib/ios/RNNRootViewController.m View File

@@ -2,9 +2,10 @@
2 2
 #import "RNNRootViewController.h"
3 3
 
4 4
 @interface RNNRootViewController()
5
-@property NSString* containerId;
6
-@property NSString* containerName;
7
-@property RNNEventEmitter *eventEmitter;
5
+@property (nonatomic, strong) NSString* containerId;
6
+@property (nonatomic, strong) NSString* containerName;
7
+@property (nonatomic, strong) RNNEventEmitter *eventEmitter;
8
+@property (nonatomic) BOOL _statusBarHidden;
8 9
 @end
9 10
 
10 11
 @implementation RNNRootViewController
@@ -23,10 +24,16 @@
23 24
 											   object:nil];
24 25
 	
25 26
 	self.navigationItem.title = node.data[@"navigationOptions"][@"title"];
27
+	self._statusBarHidden = [(NSNumber*)node.data[@"navigationOptions"][@"statusBarHidden"] boolValue];
26 28
 	
27 29
 	return self;
28 30
 }
29 31
 
32
+- (BOOL)prefersStatusBarHidden {
33
+	return self._statusBarHidden; // || self.navigationController.isNavigationBarHidden;
34
+}
35
+
36
+
30 37
 -(void)viewDidAppear:(BOOL)animated {
31 38
 	[super viewDidAppear:animated];
32 39
 	[self.eventEmitter sendContainerStart:self.containerId];

+ 31
- 42
lib/ios/ReactNativeNavigationTests/RNNControllerFactoryTest.m View File

@@ -141,48 +141,37 @@
141 141
 	XCTAssertTrue([right.child isMemberOfClass:[RNNRootViewController class]]);
142 142
 }
143 143
 
144
-- (void)testCreateLayout_ContainerSideMenuLayoutCenterTabBar {
145
-	RNNSideMenuController *ans = (RNNSideMenuController*) [self.factory createLayoutAndSaveToStore:
146
-														   @{@"id": @"cntId",
147
-															 @"type": @"SideMenuRoot",
148
-															 @"data": @{},
149
-															 @"children": @[
150
-																	 @{@"id": @"cntI_2",
151
-																	   @"type": @"SideMenuCenter",
152
-																	   @"data": @{},
153
-																	   @"children": @[
154
-																			   @{@"id": @"cntId_3",
155
-																				 @"type": @"BottomTabs",
156
-																				 @"data": @{},
157
-																				 @"children": @[
158
-																						 @{@"id": @"cntId_4",
159
-																						   @"type": @"ContainerStack",
160
-																						   @"data": @{},
161
-																						   @"children": @[
162
-																								   @{@"id": @"cntId_2",
163
-																									 @"type": @"Container",
164
-																									 @"data": @{},
165
-																									 @"children": @[]}]}]}]}]}
166
-														   ];
167
-	
168
-	XCTAssertTrue([ans isMemberOfClass:[RNNSideMenuController class]]);
169
-	XCTAssertTrue([ans isKindOfClass:[UIViewController class]]);
170
-	XCTAssertTrue([ans.center isMemberOfClass:[RNNSideMenuChildVC class]]);
171
-	
172
-	RNNSideMenuChildVC *center = (RNNSideMenuChildVC*)ans.center;
173
-	XCTAssertTrue(center.type == RNNSideMenuChildTypeCenter);
174
-	XCTAssertTrue([center.child isMemberOfClass:[UITabBarController class]]);
175
-	
176
-	UITabBarController *tabbBar = (UITabBarController*)center.child;
177
-	XCTAssertTrue(tabbBar.viewControllers.count == 1);
178
-	
179
-	UINavigationController *navController = (UINavigationController*)(tabbBar.viewControllers[0]);
180
-	XCTAssertTrue([navController isMemberOfClass:[UINavigationController class]]);
181
-	XCTAssertTrue(navController.viewControllers.count == 1);
182
-	
183
-	RNNRootViewController *rootViewController = (RNNRootViewController*)navController.viewControllers[0];
184
-	XCTAssertTrue([rootViewController isMemberOfClass:[RNNRootViewController class]]);
185
-	
144
+
145
+- (void)testNavigationOptions_default {
146
+	UIViewController *ans = [self.factory createLayoutAndSaveToStore: @{@"id": @"cntId_2",
147
+																		@"type": @"Container",
148
+																		@"data": @{@"navigationOptions": @{}},
149
+																		@"children": @[]}];
150
+	XCTAssertFalse([ans prefersStatusBarHidden]);
151
+}
152
+
153
+- (void)testNavigationOptions_true {
154
+	UIViewController *ans = [self.factory createLayoutAndSaveToStore: @{@"id": @"cntId_2",
155
+																	    @"type": @"Container",
156
+																		@"data": @{
157
+																			@"navigationOptions": @{
158
+																					@"statusBarHidden": @(1)
159
+																					}
160
+																			},
161
+																		@"children": @[]}];
162
+	XCTAssertTrue([ans prefersStatusBarHidden]);
163
+}
164
+
165
+- (void)testNavigationOptions_false {
166
+	UIViewController *ans = [self.factory createLayoutAndSaveToStore: @{@"id": @"cntId_2",
167
+																		@"type": @"Container",
168
+																		@"data": @{
169
+																				@"navigationOptions": @{
170
+																						@"statusBarHidden": @(0)
171
+																						}
172
+																				},
173
+																		@"children": @[]}];
174
+	XCTAssertFalse([ans prefersStatusBarHidden]);
186 175
 }
187 176
 
188 177
 - (void)testCreateLayout_addContainerToStore {