부스트코스 “iOS 프로그래밍” 실습 프로젝트B. SignUp - 개발일지
2020.08.11
- 프로젝트 생성
- 깃 생성하고 깃허브 레파지토리 생성 후 연동
- 뷰 컨트롤러 3개(SignIn, SignUP, SignUpAdd)생성 후 스토리보드와 연결
- SignInViewController
- 필요한 UI 컴포넌트들 추가
- 오토 레이아웃 적용 (세로/가로 모두 확인)
- 오토 레이아웃을 세로/가로 다르게 적용하는 방법이 있을까?
- 검색해보니 Vary for Traits 기능으로 가능할 듯
- 튜토리얼 찾아보니 아래 유튜브 영상이 도움 됐다.
- How to use Size Classes and Vary for Traits in Xcode 9
2020.08.12
- 실제 아이폰11에서 테스트하기 위해 개발자 계정등록
- 다크모드 적용안되게 하기
- 블로그 참조 - iOS 13 다크모드 해제
- 포인트, 픽셀 개념 알아보기
- 블로그 참조 - iOS UI 디자인 용어 스터디
- 스토리보드 SignUpViewController 화면 구성
- UI 컴포넌트 추가
- 가로/세로 모드 오토레이아웃 적용
- SignUpViewController 취소 버튼 누르면 뒤로가기 (모달 내리기)
- 스토리보드 SignUpAddViewController 화면 구성
- UI 컴포넌트 추가
- 가로/세로 모드 오토레이아웃 적용
- SignUpViewController와 SignUpAddViewController 화면 연결
- 내비게이션컨트롤러 추가 후 내비게이션 바 안보이게 함
- 취소버튼시 모달 dismiss해서 첫 화면으로 돌아가게 함
- 이미지 선택 기능 추가
- 이미지 피커 델리게이트, 제스처 인식기 델리게이트 추가
- 이미지 뷰 탭하면 이미지 피커 모달로 화면 이동
- 텍스트 필드 외 영역 선택시 키보드 내리기 기능 추가
- 제스처 인식기 델리게이트 메서드에 이미지 뷰 탭 기능과 같이 구현
회원가입정보
2020.08.13
- 테스트폰(iOS12.4)에서 앱 실행하기
- 프로젝트 설정에서 OS Deployment Target 옵션을 13.6에서 12.4로 변경
- SceneDelegate 관련 에러 발생
- iOS 13 이상에서만 SceneDelegate 방식 사용하도록 수정
- UIDatePicker로 생년월일 선택
- 값이 바뀌면 레이블에 생년월일 즉각 반영
- 유저가 선택하기 전에도 미리 현재 날짜 값 표시하기
- UserInformation 싱글턴 클래스
- 싱글턴 클래스로 작성
- 유저 정보 프로퍼티 추가
- extension 으로 클래스 분리해서 가독성 올리기
- 텍스트 필드에서 return키 누르면 다음 텍스트 필드로 커서 이동
- 참고 - TextField 키보드 return 키 처리하기
- 텍스트 필드 델리게이트 추가
- 리턴 키 누르면 becomeFirstResponder()로 커서 이동
- ‘다음’버튼 활성화
- ‘다음’버튼 활성화 조건 확인 메서드 checkSignUpInformation() 추가
- 텍스트 필드, 텍스트 뷰 편집 종료시마다 checkSignUpInformation() 호출
2020.08.14
- ‘다음’버튼 활성화
- checkSignUpInformation()에 프로필 이미지 선택했는지 조건 추가
- checkSignUpInformation() 코드 리팩토링
2020.08.17
전화번호 입력 확인
- 가입 조건 확인 메서드 checkSignUpInformation() 추가
- UITextFieldDelegate 프로토콜 추가
- 델리게이트 메서드 textFieldDidChangeSelection(_:) 에서 checkSignUpInformation() 호출
생년월일 입력 확인
- DatePiker 값 바뀜 플래그 추가
- checkSignUpInformation()에 DatePicker 조건 추가
‘가입’ 버튼 활성화, 임시 데이터 저장
- 전화번호 3자리 이상 입력
- 생년월일 입력 (DatePicker 움직여야함)
- 오늘 날짜와 같은 날이 아니면 충족되게 함
- ‘이전’ 버튼 누르면 임시데이터로 저장
- 화면3 열때 임시데이터 있다면 임시데이터 가져오기
- ‘가입’버튼 누르면 임시데이터를 정식데이터에 저장하고 첫화면으로 이동
2020.08.18
화면1,3 - 텍스트 필드외 터치하면 키보드 내리기
- UIGestureRecognizerDelegate 프로토콜 추가
- view에 UITapGestureRecognizer 추가해서 인식되면 편집종료
UserInformation.swift 리팩토링
- 클래스, 구조체, 함수명 정리
- 주석 추가
내비게이션 컨트롤러 리팩토링
- 내비게이션 컨트롤러 클래스를 만들어서 관련 메서드를 이곳에서 관리하게 함
- 블로그 참고 - ViewController에게 Navigation을 맡기지 마세요
SignInViewController 리팩토링
- 주석 추가
- 의미없는 옵셔널 바인딩 수정
SignUpViewController 리팩토링
- 주석 추가
- 의미없는 옵셔널 바인딩 수정
- 메서드 이름 수정
SignUpAddViewController 리팩토링
- 주석 추가
- 의미없는 옵셔널 바인딩 수정
- 메서드 이름 수정
2020.08.19
오픈소스 프로젝트들 참고
- 카카오 SDK
- 네이버 SDK
- 라인 SDK
- 파이어폭스 iOS
- 파이어폭스 포커스 iOS
2020.08.20
오픈소스 프로젝트들 참고
파이어폭스
- TapGestureRecognizer로 연결한 액션 메서드 이름은 앞 또는 뒤에 Tapped 붙임
- 예시: learnMoreDefaultTapped()
- pushViewController() 자체가 목적인 메서드는 이름을 show, push로 시작
- 단순히 다른 뷰 컨트롤러 보일때는 tapped 메서드안에서 pushViewController 호출
2020.08.21
오픈소스 참고
- 싱글턴 사용 방식 참고
2020.08.22
오픈소스 참고
- 싱글턴 사용 방식 참고
- Firebase 회원가입 방식 참고
2020.08.23
오픈소스 참고
- Firebase 회원가입 방식 참고
- Line SDK 샘플 참고
2020.08.24
UserInformation 클래스 수정
- 회원가입정보 구조체 삭제하고 클래스 프로퍼티로 변경
- 관련된 코드 수정
버튼 활성화 조건을 연산프로퍼티로 분리
2020.08.25
리뷰 제출
- 주석 보완
- 질문 내용 정리
- 불필요 코드 제거
- 리뷰 제출
Leave a comment