mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
Fabric: Passing size constraints as part of starting Surface
Summary: Size constraints are essential part of the running Surface, decoupling them from starting process means that we will have to perform additional commit later. This and previous couple diffs fix a problem with initial zero size of the surface and following visible "jumpy" relayout. Reviewed By: sahrens Differential Revision: D10174280 fbshipit-source-id: 0ec48692cb814fd46cc3a1d044c5eb8ab9ecb031
This commit is contained in:
committed by
Facebook Github Bot
parent
b8947c459f
commit
4ce57cb7c7
@@ -41,7 +41,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
- (void)startSurfaceWithSurfaceId:(facebook::react::SurfaceId)surfaceId
|
||||
moduleName:(NSString *)moduleName
|
||||
initailProps:(NSDictionary *)initialProps;
|
||||
initailProps:(NSDictionary *)initialProps
|
||||
layoutConstraints:(facebook::react::LayoutConstraints)layoutConstraints
|
||||
layoutContext:(facebook::react::LayoutContext)layoutContext;
|
||||
|
||||
- (void)stopSurfaceWithSurfaceId:(facebook::react::SurfaceId)surfaceId;
|
||||
|
||||
|
||||
@@ -60,11 +60,15 @@ private:
|
||||
- (void)startSurfaceWithSurfaceId:(SurfaceId)surfaceId
|
||||
moduleName:(NSString *)moduleName
|
||||
initailProps:(NSDictionary *)initialProps
|
||||
layoutConstraints:(LayoutConstraints)layoutConstraints
|
||||
layoutContext:(LayoutContext)layoutContext;
|
||||
{
|
||||
_scheduler->startSurface(
|
||||
surfaceId,
|
||||
RCTStringFromNSString(moduleName),
|
||||
convertIdToFollyDynamic(initialProps)
|
||||
convertIdToFollyDynamic(initialProps),
|
||||
layoutConstraints,
|
||||
layoutContext
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -108,11 +108,14 @@ using namespace facebook::react;
|
||||
maximumSize:(CGSize)maximumSize
|
||||
surface:(RCTFabricSurface *)surface
|
||||
{
|
||||
LayoutContext layoutContext;
|
||||
layoutContext.pointScaleFactor = RCTScreenScale();
|
||||
LayoutConstraints layoutConstraints = {};
|
||||
layoutConstraints.minimumSize = RCTSizeFromCGSize(minimumSize);
|
||||
layoutConstraints.maximumSize = RCTSizeFromCGSize(maximumSize);
|
||||
LayoutContext layoutContext = {
|
||||
.pointScaleFactor = RCTScreenScale()
|
||||
};
|
||||
|
||||
LayoutConstraints layoutConstraints = {
|
||||
.minimumSize = RCTSizeFromCGSize(minimumSize),
|
||||
.maximumSize = RCTSizeFromCGSize(maximumSize)
|
||||
};
|
||||
|
||||
return [self._scheduler measureSurfaceWithLayoutConstraints:layoutConstraints
|
||||
layoutContext:layoutContext
|
||||
@@ -123,11 +126,14 @@ using namespace facebook::react;
|
||||
maximumSize:(CGSize)maximumSize
|
||||
surface:(RCTFabricSurface *)surface
|
||||
{
|
||||
LayoutContext layoutContext;
|
||||
layoutContext.pointScaleFactor = RCTScreenScale();
|
||||
LayoutConstraints layoutConstraints = {};
|
||||
layoutConstraints.minimumSize = RCTSizeFromCGSize(minimumSize);
|
||||
layoutConstraints.maximumSize = RCTSizeFromCGSize(maximumSize);
|
||||
LayoutContext layoutContext = {
|
||||
.pointScaleFactor = RCTScreenScale()
|
||||
};
|
||||
|
||||
LayoutConstraints layoutConstraints = {
|
||||
.minimumSize = RCTSizeFromCGSize(minimumSize),
|
||||
.maximumSize = RCTSizeFromCGSize(maximumSize)
|
||||
};
|
||||
|
||||
[self._scheduler constraintSurfaceLayoutWithLayoutConstraints:layoutConstraints
|
||||
layoutContext:layoutContext
|
||||
@@ -174,13 +180,20 @@ using namespace facebook::react;
|
||||
{
|
||||
[_mountingManager.componentViewRegistry dequeueComponentViewWithName:@"Root" tag:surface.rootTag];
|
||||
|
||||
LayoutContext layoutContext = {
|
||||
.pointScaleFactor = RCTScreenScale()
|
||||
};
|
||||
|
||||
LayoutConstraints layoutConstraints = {
|
||||
.minimumSize = RCTSizeFromCGSize(surface.minimumSize),
|
||||
.maximumSize = RCTSizeFromCGSize(surface.maximumSize)
|
||||
};
|
||||
|
||||
[self._scheduler startSurfaceWithSurfaceId:surface.rootTag
|
||||
moduleName:surface.moduleName
|
||||
initailProps:surface.properties];
|
||||
|
||||
[self setMinimumSize:surface.minimumSize
|
||||
maximumSize:surface.maximumSize
|
||||
surface:surface];
|
||||
initailProps:surface.properties
|
||||
layoutConstraints:layoutConstraints
|
||||
layoutContext:layoutContext];
|
||||
}
|
||||
|
||||
- (void)_stopSurface:(RCTFabricSurface *)surface
|
||||
|
||||
Reference in New Issue
Block a user