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

Posted

技术标签:

【中文标题】如何更改 TextField 中的字段大小?【英文标题】:How to change size of field in TextField? 【发布时间】:2021-03-20 10:44:35 【问题描述】:

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

    更改字体大小:这种方法有效,但我不想让 TextField 本身的文本过大。

    使用custom modifier 不起作用。我收到消息Inheritance from non-protocol type '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())

只有红色区域是“可点击的”

【问题讨论】:

【参考方案1】:
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)

    

【讨论】:

谢谢,但是当您点击黄色矩形的边缘时会发生什么?光标是否出现并且您可以输入一些文本?对我来说,你的解决方案不起作用。 @Erik:代码更新了!现在再试一次 现在我有一个黄色矩形,但是当我点击矩形时没有任何反应 @Erik:是的,但是你可以用这些数字来达到你想要的效果,比如稍微大一点或小一点。我不知道你想要什么设计,所以如果你愿意,那就花点时间吧找到最佳尺寸,而且您知道还有其他方法,这就是您现在所能做的。 @Erik:我又写了一个代码,试试新的,如果可行的话!

以上是关于如何更改 TextField 中的字段大小?的主要内容,如果未能解决你的问题,请参考以下文章

快速处理文本字段中的测试更改事件

根据 Django 文档,尝试使用 formfield_overrides 更改 TextField 字段大小时出错

如何更改文本字段颤动中的值?

在 Flutter 中的 TextField 下显示错误

如何同时更改文本字段和标签中的文本

如何更改材质 ui TextField 的标签大小?