From e2462e90166d29cd3cbfa95ad4bbeccc17b78426 Mon Sep 17 00:00:00 2001 From: Kevin Gozali Date: Mon, 19 Mar 2018 17:33:04 -0700 Subject: [PATCH] iOS: set the default measure size correctly for RCTSurfaceHostingView Summary: The RCTRootView default needs to be translated during init of RCTSurfaceHostingView correctly. Reviewed By: shergin Differential Revision: D7327918 fbshipit-source-id: 67a2a42b554782b37a032cc0470d794554cc1e5a --- .../RCTSurfaceHostingProxyRootView.mm | 5 ++++- .../SurfaceHostingView/RCTSurfaceHostingView.h | 6 ++++-- .../SurfaceHostingView/RCTSurfaceHostingView.mm | 11 ++++------- React/Fabric/Surface/RCTFabricSurfaceHostingView.mm | 3 ++- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm b/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm index 4fc100f6b..076773a58 100644 --- a/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +++ b/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm @@ -61,7 +61,10 @@ static RCTRootViewSizeFlexibility convertToRootViewSizeFlexibility(RCTSurfaceSiz [bridge.performanceLogger markStartForTag:RCTPLTTI]; } - if (self = [super initWithBridge:bridge moduleName:moduleName initialProperties:initialProperties]) { + // `RCTRootViewSizeFlexibilityNone` is the RCTRootView's default. + RCTSurfaceSizeMeasureMode sizeMeasureMode = convertToSurfaceSizeMeasureMode(RCTRootViewSizeFlexibilityNone); + + if (self = [super initWithBridge:bridge moduleName:moduleName initialProperties:initialProperties sizeMeasureMode:sizeMeasureMode]) { self.backgroundColor = [UIColor whiteColor]; } diff --git a/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h b/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h index 4434df84e..25894ec00 100644 --- a/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +++ b/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h @@ -31,7 +31,8 @@ NS_ASSUME_NONNULL_BEGIN * Instanciates a view with given Surface object. * Note: The view retains the surface object. */ -- (instancetype)initWithSurface:(RCTSurface *)surface NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithSurface:(RCTSurface *)surface + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode NS_DESIGNATED_INITIALIZER; /** * Convenience initializer. @@ -40,7 +41,8 @@ NS_ASSUME_NONNULL_BEGIN */ - (instancetype)initWithBridge:(RCTBridge *)bridge moduleName:(NSString *)moduleName - initialProperties:(NSDictionary *)initialProperties; + initialProperties:(NSDictionary *)initialProperties + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode; /** * Create an instance of RCTSurface to be hosted. diff --git a/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm b/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm index 3c3ab2bf7..9eb41ff0b 100644 --- a/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +++ b/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm @@ -33,20 +33,17 @@ RCT_NOT_IMPLEMENTED(- (nullable instancetype)initWithCoder:(NSCoder *)coder) - (instancetype)initWithBridge:(RCTBridge *)bridge moduleName:(NSString *)moduleName initialProperties:(NSDictionary *)initialProperties + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode { RCTSurface *surface = [self createSurfaceWithBridge:bridge moduleName:moduleName initialProperties:initialProperties]; - return [self initWithSurface:surface]; - + return [self initWithSurface:surface sizeMeasureMode:sizeMeasureMode]; } -- (instancetype)initWithSurface:(RCTSurface *)surface +- (instancetype)initWithSurface:(RCTSurface *)surface sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode { if (self = [super initWithFrame:CGRectZero]) { _surface = surface; - - _sizeMeasureMode = - RCTSurfaceSizeMeasureModeWidthAtMost | - RCTSurfaceSizeMeasureModeHeightAtMost; + _sizeMeasureMode = sizeMeasureMode; _surface.delegate = self; _stage = surface.stage; diff --git a/React/Fabric/Surface/RCTFabricSurfaceHostingView.mm b/React/Fabric/Surface/RCTFabricSurfaceHostingView.mm index 395d40afb..eec159cce 100644 --- a/React/Fabric/Surface/RCTFabricSurfaceHostingView.mm +++ b/React/Fabric/Surface/RCTFabricSurfaceHostingView.mm @@ -14,11 +14,12 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge moduleName:(NSString *)moduleName initialProperties:(NSDictionary *)initialProperties + sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode { RCTFabricSurface *surface = [[RCTFabricSurface alloc] initWithBridge:bridge moduleName:moduleName initialProperties:initialProperties]; - return [self initWithSurface:surface]; + return [self initWithSurface:surface sizeMeasureMode:sizeMeasureMode]; } @end