TextField 按钮具有理想的尺寸,但不会超出屏幕边缘?

问题描述 投票:0回答:1

在 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)
    }
}
swiftui textfield
1个回答
1
投票

正如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()
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.