Swiftui 如何让TextEditor显示多行?

Swiftui 如何让TextEditor显示多行?,swiftui,ios14,Swiftui,Ios14,我想让文本编辑器显示三行文本。我有一些这样的示例代码: import SwiftUI struct MultiLineText: View { @State var value: String @State var text: String var body: some View { Form { TextField("Title", text: $value) TextEdi

我想让
文本编辑器
显示三行文本。我有一些这样的示例代码:

import SwiftUI

struct MultiLineText: View {
    @State var value: String
    @State var text: String
    
    var body: some View {
        Form {
            TextField("Title", text: $value)
            TextEditor(text: $text)
        }
    }
}

struct MultiLineText_Previews: PreviewProvider {
    static var previews: some View {
        MultiLineText(value: "my title", text: "some text")
    }
}
问题是,我总是一次只能看到两个控件的一行(
TextEditor
TextField
),尽管我希望为
TextEditor
显示多行


如何实现这一点?

表单就是这样工作的。可能的(简单的)解决方案是给
textdeditor
一个框架

更新:更复杂的情况(基于参考文本的动态计算,并考虑动态字体大小)

违约

[

大字体设置

[

ViewHeightKey
首选项取自


注意:参考文本和TextEditor的代码字体应使用相同的

Hi,但这并不是将其设置为3行。行的高度可能会根据用户的首选项而变化。好的,请参阅复杂但动态的变体更新。
TextEditor(text: $text)
    .frame(height: 80)
let lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."

struct ContentView: View {
    @State var value: String = lorem
    @State var text: String = lorem

    @State private var textHeight = CGFloat.zero
    var body: some View {
        Form {
            TextField("Title", text: $value)
            TextEditor(text: $text)
                .frame(minHeight: textHeight)
        }
        .background(
            Text("0\n0\n0")  // any stub 3 line text for reference
                .padding(.vertical, 6)  // TextEditor has default inset
                .foregroundColor(.clear)
                .lineLimit(3)
                .background(GeometryReader {
                    Color.clear
                        .preference(key: ViewHeightKey.self, value: $0.frame(in: .local).size.height)
                })
        )
        .onPreferenceChange(ViewHeightKey.self) { self.textHeight = $0 }
    }
}