在 swiftUI 中,我想要
TextField
当输入文本时,具有相对于当前内容宽度的宽度。我可以通过添加 .fixedSize()
修饰符来实现这一点。问题是如果我输入太多文本,宽度在某些时候会大于屏幕尺寸。
我想要实现的是让
TextField
具有内容大小,直到达到某个 maxWidth,在这种情况下是屏幕宽度?
编辑:谢谢大家的迅速回答:-),我不得不提一下,我还有一个额外的要求,这有点困难:
如您所见,我有
TetxField
,然后是此文本。我已经根据你的答案编写了代码,但无法得到正确的结果:
struct ContentView: View {
@State var text: String
@State private var textField = ""
@State private var width: CGFloat = 10
var body: some View {
HStack(spacing: 0) {
GeometryReader { proxy in
TextField(text.isEmpty ? "Enter Text" : "", text: $text)
.truncationMode(.tail)
.frame(maxWidth: proxy.size.width)
.fixedSize()
}
Text(".package.com")
Spacer()
}
.frame(height: 24)
.padding([.leading, .trailing], 16)
}
}
正如Ranoiaetep已经提到的,你可以使用
.frame(maxWidth)
我只能添加使用GeometryReader
将内容(屏幕)宽度设置为maxWidth
struct ContentView: View {
@State private var text: String = ""
var body: some View {
GeometryReader { geometry in
TextField("Placeholder", text: $text)
.frame(maxWidth: geometry.size.width*0.95, alignment: .leading)
.fixedSize()
.background(Color.gray.opacity(0.2))
.padding()
}
}
}