Skip to content

Commit c888af6

Browse files
committed
fix(ios): prevent wrapped text clipping
1 parent b31ba29 commit c888af6

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

  • packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager

‎packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -581,8 +581,11 @@ - (TextMeasurement)_measureTextStorage:(NSTextStorage *)textStorage
581581
size.height = enumeratedLinesHeight;
582582
}
583583

584-
size = (CGSize){ceil(size.width * layoutContext.pointScaleFactor) / layoutContext.pointScaleFactor,
585-
ceil(size.height * layoutContext.pointScaleFactor) / layoutContext.pointScaleFactor};
584+
// Wrapped text needs one extra physical pixel so its final line remains visible after layout rounding.
585+
CGFloat additionalHeightInPixels = textDidWrap ? 1.0 : 0.0;
586+
size = (CGSize){
587+
ceil(size.width * layoutContext.pointScaleFactor) / layoutContext.pointScaleFactor,
588+
(ceil(size.height * layoutContext.pointScaleFactor) + additionalHeightInPixels) / layoutContext.pointScaleFactor};
586589

587590
NSRange visibleGlyphRange = [layoutManager glyphRangeForTextContainer:textContainer];
588591

0 commit comments

Comments
 (0)