Swift 如何添加';skyfloatLabelText';在我看来?
我想在swift UI中使用skyfloatingLabelText。他们的例子如下所示Swift 如何添加';skyfloatLabelText';在我看来?,swift,swiftui,Swift,Swiftui,我想在swift UI中使用skyfloatingLabelText。他们的例子如下所示 let textField = SkyFloatingLabelTextField(frame: CGRect(x: 10, y: 10, width: 200, height: 45)) textField.placeholder = "Name" textField.title = "Your full name" self.view.addSubview(textField) 我不知道如何在我的sw
let textField = SkyFloatingLabelTextField(frame: CGRect(x: 10, y: 10, width: 200, height: 45))
textField.placeholder = "Name"
textField.title = "Your full name"
self.view.addSubview(textField)
我不知道如何在我的swift UI中实现上述代码。下面是我的swift用户界面
import SwiftUI
import SkyFloatingLabelTextField
struct Login: View {
var body: some View {
VStack() {
HeaderBar()
Spacer()
HStack {
VStack {
Text("Login Page")
.fontWeight(.bold)
TextField("Name", text: Value) //default input is ok
Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
Text("Login")
}
}
}
Spacer()
}
}
}
struct Login_Previews: PreviewProvider {
static var previews: some View {
Login()
}
}
提前感谢。如@Asperi所述,您需要为此使用
UIViewRepresentable
委托示例取自
导入快捷界面
导入SkyFloatingLabelTextField
结构SkyFloatingContentView:UIViewRepresentable{
类协调器:NSObject,UITextFieldDelegate{
var父级:SkyFloatingContentView
init(uu父项:SkyFloatingContentView){
self.parent=parent
}
func textField didchangeSelection(textField:UITextField){
如果let text=textField.text{
如果让floatingLabelTextField=textField作为?SkyFloatingLabelTextField{
如果(text.count<3 | |!text.contains(“@”)){
floatingLabelTextField.errorMessage=“无效电子邮件”
}否则{
//只有当我们将错误消息重置为nil或空字符串时,错误消息才会消失
floatingLabelTextField.errorMessage=“”
}
}
}
}
}
func makeCoordinator()->Coordinator{
协调员(自我)
}
func makeUIView(上下文:context)->SkyFloatingLabelTextField{
返回SkyFloatingLabelTextField(帧:CGRect(x:10,y:10,宽度:200,高度:45))
}
func updateUIView(textField:SkyFloatingLabelTextField,context:context){
textField.placeholder=“名称”
textField.title=“您的全名”
textField.delegate=context.coordinator
}
}
结构ContentView:View{
var body:一些观点{
VStack(){
垫片()
HStack{
VStack{
文本(“登录页面”)
.fontWeight(.粗体)
SkyFloatingContentView()
按钮(操作:/*@START\u MENU\u TOKEN@*/{}/*@END\u MENU\u TOKEN@*/){
文本(“登录”)
}
}
}
垫片()
}
}
}
结构内容视图\u预览:PreviewProvider{
静态var预览:一些视图{
ContentView()
}
}
是否尝试将其包装在UIViewRepresentable中?
import SwiftUI
import SkyFloatingLabelTextField
struct SkyFloatingContentView: UIViewRepresentable {
class Coordinator: NSObject, UITextFieldDelegate {
var parent: SkyFloatingContentView
init(_ parent: SkyFloatingContentView) {
self.parent = parent
}
func textFieldDidChangeSelection(_ textField: UITextField) {
if let text = textField.text {
if let floatingLabelTextField = textField as? SkyFloatingLabelTextField {
if (text.count < 3 || !text.contains("@")) {
floatingLabelTextField.errorMessage = "Invalid email"
} else {
// The error message will only disappear when we reset it to nil or empty string
floatingLabelTextField.errorMessage = ""
}
}
}
}
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIView(context: Context) -> SkyFloatingLabelTextField {
return SkyFloatingLabelTextField(frame: CGRect(x: 10, y: 10, width: 200, height: 45))
}
func updateUIView(_ textField: SkyFloatingLabelTextField, context: Context) {
textField.placeholder = "Name"
textField.title = "Your full name"
textField.delegate = context.coordinator
}
}
struct ContentView: View {
var body: some View {
VStack() {
Spacer()
HStack {
VStack {
Text("Login Page")
.fontWeight(.bold)
SkyFloatingContentView()
Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
Text("Login")
}
}
}
Spacer()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}