gpt4 book ai didi

SwiftUI 文本字段高度没有改变

转载 作者:行者123 更新时间:2023-12-03 15:09:22 25 4
gpt4 key购买 nike

我有一个简单的 TextField 并设置了高度和其他一些属性,但问题是文本字段的高度没有改变,下面是我的代码

 struct LoginView: View {

@State private var email = ""
@State private var password = ""

var body: some View {
VStack() {
TextField("Email", text: self.$email)
.frame(height: 55)
.textFieldStyle(RoundedBorderTextFieldStyle())
.cornerRadius(16)
.padding([.leading, .trailing], 24)

SecureField("Password", text: self.$password)
.frame(height: 55)
.textFieldStyle(RoundedBorderTextFieldStyle())
.cornerRadius(16)
.padding([.leading, .trailing], 24)
}
}
}
struct LoginView_Previews: PreviewProvider {
static var previews: some View {
LoginView()
}
}

但是,这不起作用。

最佳答案

让我们检查一下!

import SwiftUI

struct ContentView: View {

@State private var email = ""
@State private var password = ""

var body: some View {
VStack() {
TextField("Email", text: self.$email)
.frame(height: 200).border(Color.red)
.textFieldStyle(RoundedBorderTextFieldStyle())
.cornerRadius(16)
.padding([.leading, .trailing], 24)

SecureField("Password", text: self.$password)
.frame(height: 55)
.textFieldStyle(RoundedBorderTextFieldStyle())
.cornerRadius(16)
.padding([.leading, .trailing], 24)
}
}
}


struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
enter image description here
你必须了解 View 修饰符是如何工作的。 任何修改器都会返回带有修改后内容的新 View .
看到这个:-)
import SwiftUI

struct ContentView: View {

@State private var email = ""
@State private var password = ""

var body: some View {
VStack() {
TextField("Email", text: self.$email)
.frame(height: 200).border(Color.red)
.textFieldStyle(RoundedBorderTextFieldStyle())
.cornerRadius(16)
.padding([.leading, .trailing], 24)

SecureField("Password", text: self.$email)
.frame(height: 55)
.textFieldStyle(PlainTextFieldStyle())
.padding([.leading, .trailing], 4)
.cornerRadius(16)
.overlay(RoundedRectangle(cornerRadius: 16).stroke(Color.gray).padding(.bottom, -150).padding(.top, 50))
.padding([.leading, .trailing], 24)
}
}
}


struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
enter image description here
如您所见,TextField 本身的样式永远不会更改,除非您明确更改它。
目前 TextFieldStyle 公共(public) API 非常有限
/// A specification for the appearance and interaction of a `TextField`.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol TextFieldStyle {
}
您只需选择一个预定义...
DefaultTextFieldStyle
PlainTextFieldStyle
RoundedBorderTextFieldStyle
SquareBorderTextFieldStyle
你说的对!您无法更改 TextField 的高度,它的高度取决于用于呈现它的字体,除了应用一些自定义 TextFieldStyle 它没有记录,并且可能会在 future 的版本中更改...
更新,基于 How to change SwiftUI TextField style after tapping on it? (所有学分应归本题作者所有)
自定义 TextFieldStyle 示例
import SwiftUI

struct ContentView: View {

@State private var email = ""
@State private var password = ""

var body: some View {
VStack() {
TextField("Email", text: self.$email)
.textFieldStyle(MyTextFieldStyle()).border(Color.blue)
}
}
}

struct MyTextFieldStyle: TextFieldStyle {
func _body(configuration: TextField<Self._Label>) -> some View {
configuration
.padding(30)
.background(
RoundedRectangle(cornerRadius: 20, style: .continuous)
.stroke(Color.red, lineWidth: 3)
).padding()
}
}


struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
最后的样子,这就是你要找的......
enter image description here

关于SwiftUI 文本字段高度没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60374653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com