diff --git a/Source/Layout/ASYogaUtilities.mm b/Source/Layout/ASYogaUtilities.mm index fa6e13592..161a5baef 100644 --- a/Source/Layout/ASYogaUtilities.mm +++ b/Source/Layout/ASYogaUtilities.mm @@ -106,6 +106,11 @@ float yogaFloatForCGFloat(CGFloat value) } } +float cgFloatForYogaFloat(float yogaFloat) +{ + return (yogaFloat == YGUndefined) ? CGFLOAT_MAX : yogaFloat; +} + float yogaDimensionToPoints(ASDimension dimension) { ASDisplayNodeCAssert(dimension.unit == ASDimensionUnitPoints, @@ -197,6 +202,9 @@ YGSize ASLayoutElementYogaMeasureFunc(YGNodeRef yogaNode, float width, YGMeasure id layoutElement = (__bridge id )YGNodeGetContext(yogaNode); ASDisplayNodeCAssert([layoutElement conformsToProtocol:@protocol(ASLayoutElement)], @"Yoga context must be "); + width = cgFloatForYogaFloat(width); + height = cgFloatForYogaFloat(height); + ASSizeRange sizeRange; sizeRange.min = CGSizeZero; sizeRange.max = CGSizeMake(width, height);