article

Thursday, March 10, 2022

SwiftUI Login Register Page UI Design with show hide password

SwiftUI Login Register Page UI Design with show hide password

ContentView.swift
 
//
//  ContentView.swift
//  SwiftUIProject
//
//  Created by Cairocoders
//

import SwiftUI

struct ContentView: View {
    var body: some View {
        
        NavigationView{
            
            SignIn()
            .navigationBarTitle("")
            .navigationBarHidden(true)
        }
        
        
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct SignIn : View {
    
    @State var user = ""
    @State var pass = ""
    @State var show = false
    
    var body : some View{
        
        ZStack{
            NavigationLink(destination: Register(show: self.$show), isActive: self.$show) {
                Text("")
            }
            
            VStack{
                HStack{
                    Image("bgtop")
                        .resizable()
                    
                    Spacer()
                }
                
                VStack{
                    Image("logo")
                        .resizable()
                        .frame(width: 150, height: 130, alignment: .center)
                    
                }.offset(y: -40)
                .padding(.bottom,-60)
                
                VStack(spacing: 20){
                    
                    Text("Sign In").font(.title).fontWeight(.bold)
                    
                    Text("Sign Into Your Account").fontWeight(.bold)
                    
                    CustomField(value: self.$user, isemail: true)
                    
                    CustomField(value: self.$pass, isemail: false)
                    
                    HStack{
                        
                        Spacer()
                        
                        Button(action: {
                            
                        }) {
                            Text("Forget Password ?").foregroundColor(Color.black.opacity(0.1))
                        }
                    }
                    
                    Button(action: {
                        loginUser()
                    }) {
                        Text("Login")
                            .frame(width: UIScreen.main.bounds.width - 100)
                            .padding(.vertical)
                            .foregroundColor(.white)
                        
                    }.background(Color("Color1"))
                    .clipShape(Capsule())
                    
                    Text("Or Login Using Social Media").fontWeight(.bold)
                    
                    SocialMedia()
                    
                }.padding()
                .background(Color.white)
                .cornerRadius(5)
                .padding()
                
                HStack{
                    
                    Text("Don't Have an Account ?")
                    
                    Button(action: {
                        self.show.toggle()
                    }) {
                        Text("Register Now").foregroundColor(Color("Color1"))
                    }
                    
                }.padding(.top)
                
                Spacer(minLength: 0)
                
            }.edgesIgnoringSafeArea(.top)
            .background(Color("Color").edgesIgnoringSafeArea(.all))
        }
    }
    
    private func loginUser() {
        print("email : \(user) pass : \(pass)")
        
    }
}

struct CustomField : View {
    
    @Binding var value : String
    var isemail = false
    var reenter = false
    
    @State private var showText: Bool = false
    
    var body : some View{
        
        VStack(spacing: 8){
            
            HStack{
                Text(self.isemail ? "Email ID" : self.reenter ? "Re-Enter" : "Password").foregroundColor(Color.black.opacity(0.1))
                
                Spacer()
            }
            HStack{
                if self.isemail{
                    TextField("", text: self.$value)
                    
                    Image(systemName: "envelope.fill").foregroundColor(Color("Color1"))
                }
                else{
                    if showText {
                        TextField("", text: self.$value)
                    }else{
                        SecureField("", text: self.$value)
                            .disableAutocorrection(true)
                            .autocapitalization(.none)
                    }
                    
                    Button(action: {
                        showText.toggle()
                    }, label: {
                        Image(systemName: showText ? "eye.slash.fill" : "eye.fill")
                            .foregroundColor(Color("Color1"))
                    })
                }
            }
            
            Divider()
        }
    }
}
Register.swift
//
//  Register.swift
//  SwiftUIProject
//
//  Created by Cairocoders
//

import SwiftUI

struct Register : View {
    
    @State var user = ""
    @State var pass = ""
    @State var repass = ""
    @State var agree = false
    @Binding var show : Bool
    
    var body : some View{
        
        ZStack(alignment: .topLeading) {
            
            VStack{
                VStack{
                    
                    Image("logo")
                        .resizable()
                        .frame(width: 150, height: 130, alignment: .center)
                    
                }.offset(y: 50)
                .padding(.bottom,90)
                
                VStack(spacing: 20){
                    
                    Text("Sign Up").font(.title).fontWeight(.bold)
                    
                    Text("Sign Into Your Account").fontWeight(.bold)
                    
                    CustomField(value: self.$user, isemail: true)
                    
                    CustomField(value: self.$pass, isemail: false)
                    
                    CustomField(value: self.$repass, isemail: false,reenter: true)
                    
                    HStack{
                        Button(action: {
                            self.agree.toggle()
                        }) {
                            ZStack{
                                Circle().fill(Color.black.opacity(0.05)).frame(width: 20, height: 20)
                                if self.agree{
                                    Image("check").resizable().frame(width: 10, height: 10)
                                        .foregroundColor(Color("Color1"))
                                }
                            }
                        }
                        
                        Text("I Read And Agree The Terms And Conditions").font(.caption)
                            .foregroundColor(Color.black.opacity(0.1))
                        
                        Spacer()

                    }
                    
                    Button(action: {
                        
                    }) {
                        Text("Register Now")
                            .frame(width: UIScreen.main.bounds.width - 100)
                            .padding(.vertical)
                            .foregroundColor(.white)
                        
                    }.background(Color("Color1"))
                    .clipShape(Capsule())
                    
                    
                    Text("Or Register Using Social Media").fontWeight(.bold)
                    
                    SocialMedia()
                    
                }.padding()
                .background(Color.white)
                .cornerRadius(5)
                .padding()
                
                
                Spacer(minLength: 0)
                
            }.edgesIgnoringSafeArea(.top)
            .background(Color("Color").edgesIgnoringSafeArea(.all))
            
            Button(action: {
                self.show.toggle()
            }) {
                Image(systemName: "arrow.left").resizable().frame(width: 18, height: 15).foregroundColor(.black)
                
            }.padding()
            
        }.navigationBarTitle("")
        .navigationBarHidden(true)
    }
}

struct Register_Previews: PreviewProvider {
    @State static var show = false
    static var previews: some View {
        Register(show: $show)
    }
}
SocialMedia.swift
//
//  SocialMedia.swift
//  SwiftUIProject
//
//  Created by Cairocoders
//

import SwiftUI

struct SocialMedia : View {
    
    var body : some View{
        
        HStack(spacing: 40){
            
            Button(action: {
                
            }) {
                Image("fb").renderingMode(.original)
            }
            
            Button(action: {
                
            }) {
                Image("twitter").renderingMode(.original)
            }
        }
    }
}

struct SocialMedia_Previews: PreviewProvider {
    static var previews: some View {
        SocialMedia()
    }
}

Related Post