当前位置: 首页 > 知识库问答 >
问题:

iOS TextInput相对于字体大小的高度react-native

薛兴言
2023-03-14

我在使用React-Native的文本输入模块时遇到了问题

https://facebook.github.io/react-native/docs/textinput.html

在Android上,这很好也很简单,你创建TextInput,给它一个字体大小,它就相应地设置TextInput控件的高度。

另一方面,对于iOS,除非您在样式中为TextInput提供明确的高度,否则它将是0。

这通常没问题,但因为我在应用程序中使用可变字体大小。我需要文本输入高度匹配字体大小。

我尝试将文本输入高度设置为与字体大小相同的值。这没有正确运行,我不认为两者是相对的。

我有一些多行文本输入,我想根据单行的高度计算我想要的高度。

伪码

lineHeight = getHeightForFontSize(15);
multiLineHeight = lineHeight * 4; // 4 lines

综上所述。如何根据字体大小(事先知道)获取 TextInput 视图的高度。

共有1个答案

龚承嗣
2023-03-14

您可以使用onContentSizeChange来获取多行文本输入的字体高度。我用它来更改文本输入的高度,因为文本太长了。但请确保您使用的是多行文本输入。否则,它将不起作用。

<TextInput
  style={{height: this.state.height, borderColor: 'gray', borderWidth: 1}}
  onChangeText={::this.onMessageChange}
  value={this.props.message}
  multiline
  onContentSizeChange={({ nativeEvent: { contentSize: { width: txtWidth, height: txtHeight } } }) => {
    if (txtHeight > 40) {
      this.setState({
         height: txtHeight,
      });
    }
  }}
/>
 类似资料:
  • 我会保持简短直截了当,这样我就明白了: > vw根据视区宽度更改字体大小。 VH根据视区高度更改字体大小。 我的问题是; 有没有一种方法可以根据视区的宽度和高度来缩放我的字体大小?因此,改变浏览器的高度和宽度将适当地缩放我的字体大小。 我这样问是因为我想根据它们所在的容器适当地缩放我的文本大小,我的问题是容器缩放到100%的宽度和100%的高度。因此,根据高度和宽度来缩放文本大小似乎是合乎逻辑的,

  • 我不明白为什么 span 元素的高度大于其字体大小(边距和填充 = 0):JSFiddle 示例 此问题仅存在于 Mac 中: 我们怎么能看到有3个额外的像素。Windows中的相同示例: 跨度的高度等于它的字体大小。

  • 我正在尝试弄清楚如何重新调整图像的大小,使其保持宽度与高度的比率,但会被重新调整大小,直到图像的高度与包含div的高度匹配。我有这些图像又大又长(屏幕截图),我想将它们放入200px宽度、180px高度的div中进行显示,而无需手动调整图像的大小。为了使其看起来不错,图像的侧面需要溢出并与包含div一起隐藏。这是我到目前为止所拥有的: http://jsfiddle.net/f9krj/2/ 超文

  • 问题内容: 我的网站比较流畅,菜单是其宽度的20%。我希望菜单的字体大小能够正确测量,因此它始终适合方框的宽度,并且永远不要换行。我曾考虑使用“ em”作为单位,但它与浏览器的字体大小有关,因此当我更改分辨率时,字体大小保持不变。 也尝试了分数和百分比。什么都没有,因为我需要… 请给我提示如何进行。 问题答案: 您可以根据屏幕的屏幕大小手动给它。只需看看不同的屏幕大小并手动添加字体大小即可。

  • 问题内容: 我试图弄清楚如何调整图像的大小,以使其保持高宽比,但是要调整大小,直到图像的高度与包含div的高度匹配为止。我有这些非常大和很长的图像(屏幕截图),我想将它们放入200px宽,180px高的div中以进行显示,而无需手动调整图像的大小。为使外观更好看,图像的侧面需要溢出并用包含的div隐藏。这是我到目前为止的内容: HTML CSS 如您所见,图像父容器上显示灰色,根本不显示灰色。为了

  • 问题内容: 最小高度不适用于body / html吗? 完全不执行任何操作(firebug报告正文,html标签的高度完全不变) 问题答案: 首先,声明一个doctype以便您符合标准(如果还没有的话)。 现在,正文只能与包含html的正文一样高,因此您需要将HTML标签设置为100%的高度,并将正文设置为min-height 100%。这对我在Firefox上有效。