From 2ad41f3adb9883fa20f1d52fcbbc6fd0750976f9 Mon Sep 17 00:00:00 2001 From: yogevbd Date: Mon, 23 Dec 2019 14:26:39 +0200 Subject: [PATCH] Force translucent on iOS 12 when background is transparent --- lib/ios/TopBarPresenter.m | 2 ++ .../ios/NavigationIOS12Tests/RNNRootViewControllerTest.m | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ios/TopBarPresenter.m b/lib/ios/TopBarPresenter.m index be05a36259b..b645b044104 100644 --- a/lib/ios/TopBarPresenter.m +++ b/lib/ios/TopBarPresenter.m @@ -72,6 +72,7 @@ - (void)updateBackgroundAppearance { if (self.transparent) { [self setBackgroundColorTransparent]; } else if (_backgroundColor) { + self.navigationController.navigationBar.translucent = NO; self.navigationController.navigationBar.barTintColor = _backgroundColor; } else if (_translucent) { self.navigationController.navigationBar.translucent = YES; @@ -83,6 +84,7 @@ - (void)updateBackgroundAppearance { - (void)setBackgroundColorTransparent { self.navigationController.navigationBar.barTintColor = UIColor.clearColor; + self.navigationController.navigationBar.translucent = YES; self.navigationController.navigationBar.shadowImage = [UIImage new]; [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; } diff --git a/playground/ios/NavigationIOS12Tests/RNNRootViewControllerTest.m b/playground/ios/NavigationIOS12Tests/RNNRootViewControllerTest.m index 84493936885..63a67bf1be4 100644 --- a/playground/ios/NavigationIOS12Tests/RNNRootViewControllerTest.m +++ b/playground/ios/NavigationIOS12Tests/RNNRootViewControllerTest.m @@ -185,6 +185,7 @@ -(void)testTopBarTransparent_BOOL_True { nav.navigationBar.barTintColor = UIColor.clearColor; XCTAssertTrue([nav.navigationBar.barTintColor isEqual:UIColor.clearColor]); + XCTAssertTrue(nav.navigationBar.isTranslucent); } -(void)testTopBarTransparent_BOOL_false { @@ -192,7 +193,7 @@ -(void)testTopBarTransparent_BOOL_false { __unused RNNStackController* nav = [self createNavigationController]; self.options.topBar.background.color = [[Color alloc] initWithValue:inputColor]; [self.uut viewWillAppear:false]; - + XCTAssertFalse(nav.navigationBar.isTranslucent); XCTAssertFalse([nav.navigationBar.barTintColor isEqual:UIColor.clearColor]); }