1. 스플래시

Untitled

스플래시 화면:
DispatchQue.main을 통하여 2초간 SplashViewController가 실행되도록 구현 하였습니다. 
SplashView가 보이는 단계에서 UserDefaults에 AccessToken이 있는지 여부를 조회하여, 
어느 뷰로 넘어갈지 분기 처리를 하였습니다. 만일 AccessToken이 없다면 LoginViewController로 넘어가게 됩니다.

1. 로그인 화면

Simulator Screenshot - iPhone 13 mini - 2024-01-19 at 16.53.30.png

로그인 화면:
2.5초마다 넘어가는 swipeView를 scrollView, pageControl을 이용하여 구현하였습니다. 
또한 애플 로그인 관련 로직을 구현하였습니다. 로그인 버튼을 누르고 애플 로그인이 성공 하였을 지
(givenName, familyName, identifyTokenString, userIdentifier) 값이 UserDefaults에 저장되게 하였습니다.
이후 소셜 로그인 API 통신을 발생하게 하여, 그 결과에 따라 온보딩 뷰 혹은 메인 뷰로 이동하게 처리하였습니다.

2. 기간 설문조사 화면

Untitled

기간 설문 조사 화면:
프로젝트 전반에 활용되는 커스텀 네비게이션 바를 작성하여 활용하였습니다.

또한 온보딩 과정 전반에 이용되는 네비게이션바, 버튼, 타이틀, 프로그래스 바에 대하여 BaseViewController
를 작성하여 상속 받아 사용하였습니다.

설문조사 부분에 대하여 SurveyView를 만들어 버튼의 stackView로 구성하였습니다.

선택되는 부분이 있을 시에만 다음 버튼이 활성화 됩니다. 

3. 문제인식 설문조사 화면

Simulator Screen Recording - iPhone 13 mini - 2024-01-19 at 17.02.39.gif

문제인식 설문 조사: 
최대 2개 까지 선택되는 설문조사 화면을 구현하였습니다. 
2개까지만 선택 가능하고 다시 누르면 토글되게 구현하였습니다.
설문 조사의 모든 결과들은 UserDefults에 저장됩니다.

4. 챌린지 기간 선택 화면

Simulator Screen Recording - iPhone 13 mini - 2024-01-19 at 17.03.02.gif

챌린지 기간 선택 화면:
 4개의 챌린지 기간을 선택하여 UserDefults에 저장하는 로직을 구현하였습니다. 
 
 20일, 30일의 경우 미출시 기능이므로 비활성화 처리하였습니다. 

5. 총 목표 사용 시간 설정

Simulator Screen Recording - iPhone 13 mini - 2024-01-19 at 17.03.22.gif

총 목표 사용 시간 설정 뷰:
챌린지에서 모든 앱의 총 이용시간으로 이용될 값을 UIPickerView에서 받아 설정할 수 있습니다. 
프로젝트 전반에 이용되는 커스텀 PickerView를 제작하여 활용하였습니다. 

선택가능한 범위는 2-6 시간으로 설정하여 Picker가 활성화 되어 value가 저장되는 시점에 다음 버튼이
활성화되게 구현하였습니다.

선택된 값은 MilliSeocond로 변환되어 UserDefults에 저장됩니다. 

6. 권한 허용 화면