From 384c8ec3a8774b075d0dca665d01de82ff9d19bd Mon Sep 17 00:00:00 2001 From: Hailey Date: Thu, 18 Jan 2024 21:57:56 -0800 Subject: [PATCH] line break mode --- .../ios/RNUITextView.swift | 20 +++++++++++++++++++ .../ios/RNUITextViewManager.m | 2 +- .../ios/RNUITextViewManager.swift | 2 -- .../ios/RNUITextViewShadow.swift | 1 - 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/react-native-ui-text-view/ios/RNUITextView.swift b/modules/react-native-ui-text-view/ios/RNUITextView.swift index 453838a3eb..08aee88df0 100644 --- a/modules/react-native-ui-text-view/ios/RNUITextView.swift +++ b/modules/react-native-ui-text-view/ios/RNUITextView.swift @@ -11,6 +11,11 @@ class RNUITextView: UIView { textView.isSelectable = selectable } } + @objc var ellipsizeMode: String = "tail" { + didSet { + textView.textContainer.lineBreakMode = self.getLineBreakMode() + } + } @objc var onTextLayout: RCTDirectEventBlock? override init(frame: CGRect) { @@ -118,4 +123,19 @@ class RNUITextView: UIView { return nil } + + func getLineBreakMode() -> NSLineBreakMode { + switch self.ellipsizeMode { + case "head": + return .byTruncatingHead + case "middle": + return .byTruncatingMiddle + case "tail": + return .byTruncatingTail + case "clip": + return .byClipping + default: + return .byTruncatingTail + } + } } diff --git a/modules/react-native-ui-text-view/ios/RNUITextViewManager.m b/modules/react-native-ui-text-view/ios/RNUITextViewManager.m index 5fa50af448..9a6f0285cb 100644 --- a/modules/react-native-ui-text-view/ios/RNUITextViewManager.m +++ b/modules/react-native-ui-text-view/ios/RNUITextViewManager.m @@ -2,10 +2,10 @@ @interface RCT_EXTERN_MODULE(RNUITextViewManager, RCTViewManager) RCT_REMAP_SHADOW_PROPERTY(numberOfLines, numberOfLines, NSInteger) -RCT_REMAP_SHADOW_PROPERTY(ellipsizeMode, ellipsizeMode, NSString) RCT_REMAP_SHADOW_PROPERTY(allowsFontScaling, allowsFontScaling, BOOL) RCT_EXPORT_VIEW_PROPERTY(onTextLayout, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(ellipsizeMode, NSString) RCT_EXPORT_VIEW_PROPERTY(selectable, BOOL) @end diff --git a/modules/react-native-ui-text-view/ios/RNUITextViewManager.swift b/modules/react-native-ui-text-view/ios/RNUITextViewManager.swift index 76619ea538..297bcbbb26 100644 --- a/modules/react-native-ui-text-view/ios/RNUITextViewManager.swift +++ b/modules/react-native-ui-text-view/ios/RNUITextViewManager.swift @@ -1,7 +1,5 @@ @objc(RNUITextViewManager) class RNUITextViewManager: RCTViewManager { - var textStorage = NSTextStorage() - override func view() -> (RNUITextView) { return RNUITextView() } diff --git a/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift b/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift index 200a99bc1a..4fcf3a0f50 100644 --- a/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift +++ b/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift @@ -1,7 +1,6 @@ class RNUITextViewShadow: RCTShadowView { // Props @objc var numberOfLines: Int = 0 - @objc var ellipsizeMode: Int = 0 @objc var allowsFontScaling: Bool = true var attributedText: NSAttributedString = NSAttributedString()