如何更改 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 中的字段大小?的主要内容,如果未能解决你的问题,请参考以下文章