Fab*_*bio 5 string height text dynamic swiftui
TextEditor
我正在尝试为聊天视图创建不断增长的输入。
目标是拥有一个可以扩展的盒子,例如达到 6 行。之后它应该是可滚动的。
我已经设法使用包含换行符的字符串来做到这一点\n
。
TextEditor(text: $composedMessage)
.onChange(of: self.composedMessage, perform: { value in
withAnimation(.easeInOut(duration: 0.1), {
if (value.numberOfLines() < 6) {
height = startHeight + CGFloat((value.numberOfLines() * 20))
}
if value.numberOfLines() == 0 || value.isEmpty {
height = 50
}
})
})
Run Code Online (Sandbox Code Playgroud)
我创建了一个字符串扩展,它通过调用返回换行符的数量string.numberOfLines()
var startHeight: CGFloat = 50
问题:如果我粘贴包含很长文本的文本,当该字符串没有换行符时,它不会扩展。文本编辑器中的文本被破坏。
如何计算文本编辑器的中断次数并在该位置放置新行字符?
我找到了解决办法!
对于其他试图解决此问题的人:
我添加了一个Text
与输入字段相同宽度的,然后使用了GeometryReader
计算自动换行的文本的高度。然后,如果将高度除以字体大小,则可以得到行数。
您可以隐藏文本字段(在 iOS 14 和 iOS 15 beta 3 中测试)
归档时间: |
|
查看次数: |
2641 次 |
最近记录: |