mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
feat(iOS): added lineBreakStrategy attribute to Text/TextInput (#31272)
Summary: iOS did not support the implementation of Korean word-wrap(line-break) before iOS14. If the attribute applied, the word-wrap of Korean will works. ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [iOS] [Added] - Line break strategy for Text and TextInput components Pull Request resolved: https://github.com/facebook/react-native/pull/31272 Test Plan: 1. Test build and run on above iOS 14. 2. Test it does not affect existing text components when set default(none) strategy. 3. Test whether word-wrap works with Korean when set hangul-word strategy. <img src="https://user-images.githubusercontent.com/26326015/112963967-d7f70c00-9182-11eb-9a34-8c758b80c219.png" width="300" height="" style="max-width:100%;"> Reviewed By: javache Differential Revision: D39824809 Pulled By: lunaleaps fbshipit-source-id: 42cb0385221a38c84e80d3494d1bfc1934ecf32b
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a0ee6fae5e
commit
048194849b
@@ -27,6 +27,7 @@ NSString *const RCTTextAttributesTagAttributeName = @"RCTTextAttributesTagAttrib
|
||||
_maxFontSizeMultiplier = NAN;
|
||||
_alignment = NSTextAlignmentNatural;
|
||||
_baseWritingDirection = NSWritingDirectionNatural;
|
||||
_lineBreakStrategy = NSLineBreakStrategyNone;
|
||||
_textShadowRadius = NAN;
|
||||
_opacity = NAN;
|
||||
_textTransform = RCTTextTransformUndefined;
|
||||
@@ -66,6 +67,7 @@ NSString *const RCTTextAttributesTagAttributeName = @"RCTTextAttributesTagAttrib
|
||||
_baseWritingDirection = textAttributes->_baseWritingDirection != NSWritingDirectionNatural
|
||||
? textAttributes->_baseWritingDirection
|
||||
: _baseWritingDirection; // *
|
||||
_lineBreakStrategy = textAttributes->_lineBreakStrategy ?: _lineBreakStrategy;
|
||||
|
||||
// Decoration
|
||||
_textDecorationColor = textAttributes->_textDecorationColor ?: _textDecorationColor;
|
||||
@@ -117,6 +119,13 @@ NSString *const RCTTextAttributesTagAttributeName = @"RCTTextAttributesTagAttrib
|
||||
isParagraphStyleUsed = YES;
|
||||
}
|
||||
|
||||
if (_lineBreakStrategy != NSLineBreakStrategyNone) {
|
||||
if (@available(iOS 14.0, *)) {
|
||||
paragraphStyle.lineBreakStrategy = _lineBreakStrategy;
|
||||
isParagraphStyleUsed = YES;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isnan(_lineHeight)) {
|
||||
CGFloat lineHeight = _lineHeight * self.effectiveFontSizeMultiplier;
|
||||
paragraphStyle.minimumLineHeight = lineHeight;
|
||||
@@ -318,7 +327,7 @@ static NSString *capitalizeText(NSString *text)
|
||||
RCTTextAttributesCompareFloats(_letterSpacing) &&
|
||||
// Paragraph Styles
|
||||
RCTTextAttributesCompareFloats(_lineHeight) && RCTTextAttributesCompareFloats(_alignment) &&
|
||||
RCTTextAttributesCompareOthers(_baseWritingDirection) &&
|
||||
RCTTextAttributesCompareOthers(_baseWritingDirection) && RCTTextAttributesCompareOthers(_lineBreakStrategy) &&
|
||||
// Decoration
|
||||
RCTTextAttributesCompareObjects(_textDecorationColor) && RCTTextAttributesCompareOthers(_textDecorationStyle) &&
|
||||
RCTTextAttributesCompareOthers(_textDecorationLine) &&
|
||||
|
||||
Reference in New Issue
Block a user