代码之家  ›  专栏  ›  技术社区  ›  swiftPunk Alexander

为什么TextField不使用它的lineLimit在SwiftUI中转到下一行?

  •  0
  • swiftPunk Alexander  · 技术社区  · 5 年前

    我有一个TextField,它的lineLimit为10,当TextField的文本长度大于它的框架时,它不会使用下一行,而是像以前一样继续在同一行中键入,为什么TextField不使用它的lineLimit?

    import SwiftUI
    
    struct ContentView: View {
        
        @State private var stringOfText: String = "Hello, world!"
        
        var body: some View {
    
            TextField("", text: $stringOfText)
                .frame(width: 300, height: 200, alignment: .top)
                .background(Color.yellow)
                .multilineTextAlignment(.leading)
                .lineLimit(10)
    
        }
    }
    

    enter image description here

    0 回复  |  直到 5 年前
        1
  •  1
  •   jnpdx    5 年前

    lineLimit 是一个修饰符(更具体地说,它添加了一个环境属性) Text ,不 TextField 。从SwiftUI标题 lineLimit :

    线路限制适用于所有 文本 层次结构中的实例。

    文本字段 用于单线输入。SwiftUI 2.0发布 TextEditor 对于多行输入,默认情况下会自动换行。

    从TextEditor文档中:

    如果要更改文本的间距或字体缩放方面,可以使用lineLimit等修饰符( :),行距( :)和最小比例因子( :)配置视图如何根据空间限制显示文本。例如,这里的lineSpacing( :)修改器将线条之间的间距设置为5个点:

    https://developer.apple.com/documentation/swiftui/texteditor