React Native: как динамически рассчитать собственную высоту UITextView

Я работаю над существующим iOS-приложением, в которое я добавил новые функции с помощью React-Native. Пока работает отлично. Теперь мне нужно использовать уже разработанный собственный подкласс Swift UITextView. Текст загружается из API. Таким образом, размер UITextView должен быть динамическим.

На стороне React-Native это выглядит так:

import { requireNativeComponent } from 'react-native';

export const NativeTextView = requireNativeComponent('RNNativeTextView');

export default function FooView(props: FooViewProps) {
    return (
        <View
            style={{
                ...props.style,
                flexDirection: 'row',
                flexWrap: 'wrap',
                backgroundColor: 'red',
                margin: Dimensions.generalPadding * 2,
            }}
        >
            <NativeTextView
                text={props.viewModel.aboutMeText}
                textColorString={Colors.red}
                backgroundColor={Colors.black}
                style={{
                    ...regularTextStyle,
                    width: "100%",
                    flexDirection: 'row',
                }}    />
        </View>
    )
}

На стороне родной iOS:


@objc(RNNativeTextView)
class NativeTextView: UITextView {
   ... (native implementation)
}
import Foundation

@objc(RNNativeTextViewManager)
class RNNativeTextViewManager: RCTViewManager {

    override func view() -> UIView! {

        let textView = NativeTextView(frame: CGRect(x: 0, y: 0, width: .zero, height: .zero))
        return textView
  }
}
#import <React/RCTBridgeModule.h>
#import <React/RCTViewManager.h>


@interface RCT_EXTERN_MODULE(RNNativeTextViewManager, RCTViewManager)

RCT_EXPORT_VIEW_PROPERTY(text, NSString)
RCT_EXPORT_VIEW_PROPERTY(textColorString, NSString)

+ (BOOL)requiresMainQueueSetup { return YES; }

@end

Таким образом, TextView вообще не отображается. Это так, потому что высота NativeTextView равна 0. Если я добавлю статическую фиксированную высоту к стилю, NativeTextView будет отображаться, как и ожидалось. Но мне нужна динамическая высота, которая, конечно, зависит от длины текста.

Пытался найти решение в документации разработчика, но ничего полезного не нашел. Я что-то пропустил? Каким будет хороший и эффективный способ вычислить высоту этого UITextView?

0 ответов

Другие вопросы по тегам