Swift隨手紀錄Day22-LoginController UI修改

Darren

防止偷懶Day22 今天時間不太夠,就來修正一下UI好了 決定在LoginController實作一下用SegmentedControl的選擇來動態調整UI的功能 用來區分使用者是登入還是註冊 如果是註冊就多一個UITextField來讓使用者輸入名稱 之後讓主畫面可以顯示目前登入的使用者名稱 如果是登入就只需要email 先把要移動的部分處理一下

防止偷懶Day22

今天時間不太夠,就來修正一下UI好了

決定在LoginController實作一下用SegmentedControl的選擇來動態調整UI的功能

用來區分使用者是登入還是註冊

如果是註冊就多一個UITextField來讓使用者輸入名稱

之後讓主畫面可以顯示目前登入的使用者名稱

如果是登入就只需要email

先把要移動的部分處理一下

首先來看一下效果

接下來就進入LoginController.swift修改一下

import
import

class
LoginController
AddMemberController
    
    let
UISegmentedControl
=
        let
=
UISegmentedControl
"Login"
"Register"
        sc.selectedSegmentIndex =
0
        sc.translatesAutoresizingMaskIntoConstraints =
false
        sc.addTarget(self
#selector
        return
    }()
    
    let
UITextField
=
        let
=
UITextField
        text.placeholder =
"email"
        text.translatesAutoresizingMaskIntoConstraints =
false
        text.layer.borderColor =
UIColor
        text.layer.borderWidth =
1
        return
    }()
    
    let
UITextField
=
        let
=
UITextField
        text.placeholder =
"password"
        text.translatesAutoresizingMaskIntoConstraints =
false
        text.isSecureTextEntry =
true
        text.layer.borderColor =
UIColor
        text.layer.borderWidth =
1
        return
    }()
    
    lazy
var
UIButton
=
        let
=
UIButton
        button.translatesAutoresizingMaskIntoConstraints =
false
        button.setTitle("Login"
        button.backgroundColor =
        button.addTarget(self
#selector
        return
    }()
    
    func
handleRegister
        guard
let
=
let
=
else
            print
"Input Error"
            return
        }
        
        FIRAuth
?
FIRUser
in
            
            if
!=
nil
                print
!
                return
            }
            
            let
=
FIRDatabase
"https://hbcrecord-5a3d4.firebaseio.com/"
            let
=
"User"
            let
=
"email"
            userReference.updateChildValues(accountValue, withCompletionBlock: { (err, ref) in
                
                if
!=
nil
                    print
!
                    return
                }
                
                print
"New user saved success"
                
            })
            
        })
    }
    
    func
handleChangeButtonTitle
        if
==
0
            loginButton.setTitle("Login"
            profileImageTopAnchor?
=
64
            emailTopAnchor?
=
8
        } else
            loginButton.setTitle("Register"
            profileImageTopAnchor?
=
32
            emailTopAnchor?
=
48
        }
    }
    
    var
NSLayoutConstraint
    var
NSLayoutConstraint
    
    override
func
viewDidLoad
        super
        
        profileImage.removeAllConstraints()
        positionSegmentedControl.removeFromSuperview()
        nameText.removeFromSuperview()
        registerButton.removeFromSuperview()
        
        view.addSubview(loginSegmentedControl)
        view.addSubview(emailText)
        view.addSubview(passwordText)
        view.addSubview(loginButton)
        
        profileImageTopAnchor =
64
        profileImageTopAnchor?
=
true
        profileImage.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive =
true
        profileImage.heightAnchor.constraint(equalToConstant: 110
=
true
        profileImage.widthAnchor.constraint(equalToConstant: 110
=
true
        
        loginSegmentedControl.topAnchor.constraint(equalTo: profileImage.bottomAnchor, constant: 8
=
true
        loginSegmentedControl.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 22
=
true
        loginSegmentedControl.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -
22
=
true
        loginSegmentedControl.heightAnchor.constraint(equalToConstant: 24
=
true
        
        emailTopAnchor =
8
        emailTopAnchor?
=
true
        emailText.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 22
=
true
        emailText.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -
22
=
true
        emailText.heightAnchor.constraint(equalToConstant: 32
=
true
        
        passwordText.topAnchor.constraint(equalTo: emailText.bottomAnchor, constant: 8
=
true
        passwordText.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 22
=
true
        passwordText.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -
22
=
true
        passwordText.heightAnchor.constraint(equalToConstant: 32
=
true
        
        loginButton.topAnchor.constraint(equalTo: passwordText.bottomAnchor, constant: 8
=
true
        loginButton.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 22
=
true
        loginButton.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -
22
=
true
        loginButton.heightAnchor.constraint(equalToConstant: 50
=
true
        
    }

}

extension
UIView
    func
removeAllConstraints
        self
self
        for
in
self
            view.removeAllConstraints()
        }
    }
}

先新增一個function來移除原本的constrains

然後定義兩個變數profileImageTopAnchoremailTopAnchor之後用來調整位置

接下來在viewDidLoad裡面利用這兩個變數來調整anchor的定義

最後在handleChangeButtonTitle這個function內調整這兩個anchor的數值以達到移動UI的效果

下篇繼續把調整完成~

Thanks for reading!

I hope you found this article helpful. Feel free to share your thoughts or questions.