This App is a crypto currency wallet, which can be broken down into 3 parts: login, wallet, and transaction.
For the login part, this App will use the phone number authentication. To be more specific, the App will take a phone number from the user and send a verification code to this phone number by text message. the App will then ask the user to enter the code and verify user's identity. This App only support US phone number.
For the wallet part, this App will display the wallet, which has a table of accounts and the information of each account, which contains the name of the account and the amount of encrypted currency.
For the transaction part, this App will allow the user to make transactions between the accounts in the wallet.
The design might be changed during the development of the App. Please check the document for each version.
Version | 1.0 |
---|---|
Supported Device | iPhone |
Orientation | Portrait |
Launch Screen | Done |
AppIcon | iPhone and App Store |
The auto layout is applied to all the views, including launch screen. The UILabel that is used to display error detection result is hidden and the corners of the UIButton is rounded by half of the height.
Used UITextField Delegate and libPhoneNumber_iOS Pod to format the user input to national phone number format.
Used .filter
to get the phone number from formatted phone number. The App will test if user entered anything and if user entered exact 10 digits. The App will only test the input when user tap the "Next" button.
Condition | Implementation | Message | UIColor |
---|---|---|---|
No input | Count the digits | "Please enter your phone number." | .red |
Invalid input | Count the digits | "Your phone number is invalid." | .red |
Valid input | Else | Phone number in E164 format | .init(red: 0.0, green: 200/255, blue: 0.0, alpha: 1.0) |
For this text field, the phone number keyboard is offered. When user tap on the text field, the keyboard will be shown. If users tap elsewhere (touchesBegan
) or tap the "Next" button (@IBAction func nextOnTap
), the keyboard will be hidden (self.view.endEditing(true)
).