Swiftui 如何更改TextField中字段的大小?

Swiftui 如何更改TextField中字段的大小?,swiftui,Swiftui,我需要更改文本字段的大小(实际上只是高度)。使用.padding()只会增加文本字段周围的区域,而不会增加字段本身。我尝试了一些可能的解决方案: 更改字体大小:这种方法可行,但我不希望文本字段本身有太大的文本 使用不起作用。我从非协议类型“TextFieldStyle”获得消息继承。似乎不再在Swift 5中工作了 我目前的解决办法是: @State private var searchText: String = "" var body: some View { H

我需要更改文本字段的大小(实际上只是高度)。使用
.padding()
只会增加文本字段周围的区域,而不会增加字段本身。我尝试了一些可能的解决方案:

  • 更改字体大小:这种方法可行,但我不希望文本字段本身有太大的文本

  • 使用不起作用。我从非协议类型“TextFieldStyle”获得消息
    继承
    。似乎不再在Swift 5中工作了

  • 我目前的解决办法是:

    @State private var searchText: String = ""
    
    var body: some View {
    
    HStack{
        Image(systemName: "magnifyingglass")
            .font(.system(size: 20, weight: .bold))
        
        ZStack(alignment: .leading){
            if searchText.isEmpty { Text("search") }
            TextField("", text: $searchText,
                      onEditingChanged: { focused in
                        if focused {
                            // do something...
                        }
                      },
                      onCommit: {
                        // do something...
                      })
                .keyboardType(.alphabet)
                .disableAutocorrection(true)
                .frame(height: 50)
        }
        .textFieldStyle(PlainTextFieldStyle())
    }
    .frame(height: 30)
    .frame(maxWidth: .infinity)
    .foregroundColor(.white)
    .accentColor(.white)
    .padding()
    .background(
        Color("Color-2")
            .cornerRadius(20)
            .shadow(color: Color.black.opacity(0.3), radius: 5, x: 5, y: 5)
    )
    .contentShape(Rectangle())
    }}
    
    只有红色区域是“可点击的”


    谢谢,但是当你点击黄色矩形的边缘时会发生什么?光标是否出现,您是否可以键入一些文本?对我来说,你的解决方案不起作用。@Erik:代码已经更新了!现在再试一次我有一个黄色的矩形,但是当我点击矩形时什么也没有happens@Erik:是的,但是你可以通过玩这些数字来达到你想要的,比如做大一点或做小一点我不知道你想要什么设计,所以如果你想找到最好的尺寸,就要花时间,而且你知道还有其他方法,这就是你现在所能做的一切。@Erik:我做了另一个代码,试试新的,如果行得通的话!
    import SwiftUI
    
    struct ContentView: View {
        
        @State var stringOfText: String = ""
        
        var body: some View {
    
            TextField("", text: $stringOfText)
                .font(Font.system(size: 50))
                .background(Color.yellow)
                .foregroundColor(Color.clear)
                .cornerRadius(10)
                .overlay(Text(stringOfText), alignment: .leading)
                .padding()
                .shadow(radius: 10)
    
        }
    }