From b12cf113307e26cf9c5054262e73ae5cdddda37c Mon Sep 17 00:00:00 2001 From: Ryan Donnelly Date: Fri, 22 Jun 2018 16:55:41 -0400 Subject: [PATCH] add correct window dimensions for iOS --- React/Modules/RCTDeviceInfo.m | 15 +++++++++++---- React/UIUtils/RCTUIUtils.m | 19 ++++++++++++++++--- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/React/Modules/RCTDeviceInfo.m b/React/Modules/RCTDeviceInfo.m index 1be4fcd873689c..0e4ffa7e7aa42b 100644 --- a/React/Modules/RCTDeviceInfo.m +++ b/React/Modules/RCTDeviceInfo.m @@ -77,16 +77,23 @@ static BOOL RCTIsIPhoneX() { RCTAssertMainQueue(); RCTDimensions dimensions = RCTGetDimensions(bridge.accessibilityManager.multiplier); - typeof (dimensions.window) window = dimensions.window; // Window and Screen are considered equal for iOS. - NSDictionary *dims = @{ + typeof (dimensions.window) window = dimensions.window; + NSDictionary *dimsWindow = @{ @"width": @(window.width), @"height": @(window.height), @"scale": @(window.scale), @"fontScale": @(window.fontScale) }; + typeof (dimensions.screen) screen = dimensions.screen; + NSDictionary *dimsScreen = @{ + @"width": @(screen.width), + @"height": @(screen.height), + @"scale": @(screen.scale), + @"fontScale": @(screen.fontScale) + }; return @{ - @"window": dims, - @"screen": dims + @"window": dimsWindow, + @"screen": dimsScreen }; } diff --git a/React/UIUtils/RCTUIUtils.m b/React/UIUtils/RCTUIUtils.m index dcc3353ccf6f60..961c9426e3564c 100644 --- a/React/UIUtils/RCTUIUtils.m +++ b/React/UIUtils/RCTUIUtils.m @@ -7,19 +7,32 @@ #import "RCTUIUtils.h" +#import "RCTUtils.h" + RCTDimensions RCTGetDimensions(CGFloat fontScale) { UIScreen *mainScreen = UIScreen.mainScreen; CGSize screenSize = mainScreen.bounds.size; + + UIView *mainWindow; + mainWindow = RCTKeyWindow(); + CGSize windowSize = mainWindow.bounds.size; + RCTDimensions result; - typeof (result.window) dims = { + typeof (result.screen) dimsScreen = { .width = screenSize.width, .height = screenSize.height, .scale = mainScreen.scale, .fontScale = fontScale }; - result.window = dims; - result.screen = dims; + typeof (result.window) dimsWindow = { + .width = windowSize.width, + .height = windowSize.height, + .scale = mainScreen.scale, + .fontScale = fontScale + }; + result.screen = dimsScreen; + result.window = dimsWindow; return result; }