实现这种设计的最简单方法是将Image
和TextField
放在HStack
中,并为其赋予一个四舍五入的背景。密码字段稍微复杂一些,因为它需要一个额外的Button
,并且在隐藏/显示密码时,您需要在TextField
和SecureField
之间进行更改。这是我的看法:
struct ContentView: View {
@State private var username = ""
@State private var password = ""
@State private var showPassword = false
var body: some View {
ZStack {
Color.blue
VStack {
HStack {
Image(systemName: "person")
.foregroundColor(.secondary)
TextField("Username",text: $username)
} .padding()
.background(Capsule().fill(Color.white))
HStack {
Image(systemName: "lock")
.foregroundColor(.secondary)
if showPassword {
TextField("Password",text: $password)
} else {
SecureField("Password",text: $password)
}
Button(action: { self.showPassword.toggle()}) {
Image(systemName: "eye")
.foregroundColor(.secondary)
}
} .padding()
.background(Capsule().fill(Color.white))
} .padding()
}
}
}
,
我真的是 SwiftUI 的新手,但我找到了一个解决方法,我希望它不会在将来引起任何问题,否则这将是一个重要的教训。如果有人有任何建议,我也会很感激! =]
我将 TextField 和图像嵌入到 ZStack 中,并将图像放入视图中并为视图添加了填充。
[
{
"operation": "modify-overwrite-beta","spec": {
"queryParams": {
"lmt": "=firstElement(@(1,limit))","limit": "=divide(@(1,lmt),2)"
}
}
},{
"operation": "shift","spec": {
"queryParams": {
"limit": "&1.limit","breakdowns": "&1.breakdowns"
},"body": "body"
}
}
]
,
我创建了一个名为 ASTextField 的可重复使用的SwiftUI文本字段,其工作原理类似于UIKit中的textField,您可以在其中添加 leftView 和 rightView 并可以处理与它们相关的事件。
您可以在gist上找到此实现。
这种消费方式:-
struct ContentView : View,ASTextFieldDelegate {
let leftImage = UIImage(systemName: "calendar")
let rightImage = UIImage(systemName: "eye")
let rightImage1 = UIImage(systemName: "trash")
@State var text : String? = "with simple binding"
@State var text1 : String? = "with closure for right item"
@State var text2 : String? = "for secure entry"
var body: some View {
VStack {
Spacer()
ASTextField(text: $text)
Spacer()
ASTextField(rightItem: rightImage1,leftItem: leftImage,handleLeftTap: {
print("right icon tapped.....")
},delegate: self,text: $text1)
Spacer()
ASTextField(rightItem: rightImage,isSecuredEntry: true,text: $text2)
Spacer()
}
}
}
,
“Introspect”对你有用
文本域()
.introspectTextField { 文本字段在
textfield.rightViewMode = .unlessEditing
textfield.rightView = UIImageView(image: UIImage(named: ImageCatalog.error.content))
}
本文链接:https://www.f2er.com/3026202.html