이정엽 | 도연서 | 김윤서 |
홈 | 로그인, 회원가입 | 캘린더, 무지개 |
- 뷰컨트롤러 연결
- 선택에 유무에 따른 이미지
- 책 제목
- 프로필 사진
- 이전 작성한 일기
- 일기 작성 버튼
- 목차
- 목차 편집 버튼
- 목차 상세 버튼
- 목차 일기 개수
- 서버 통신
- 목차 드롭다운
- 목차 선택에 따른 뷰와 목차 최신화
- 월 별 일기
- URL로 이미지 받아오기
- 일기 터치
- 일기 스와이프
- 일기 삭제
- 서버 통신
- 목차
- 목차 추가 버튼
- 목차 삭제 버튼
- 목차 수정 버튼
- 목차 추가 모달
- 목차 삭제 모달
- 목차 수정 모달
- 서버 통신
- 주인공 이미지
- 주인공 선택
- 기분 이미지
- 기분 선택
- 주인공 해제 ALERT
- 다음 버튼
- 사진 업로드
- 사진 자르기
- 목차 드롭다운
- 제목 작성
- 글자 수 초과 시 숫자 폰트색 빨간색 처리
- 이야기 작성
- 작성 완료 버튼
- 서버 통신
- ID 작성
- 비밀번호 작성
- 작성 시 주황색 밑줄 처리
- 입력 여부에 따른 버튼 비/활성화
- 로그인 버튼
- 회원가입 버튼
- 로그인 실패 ALERT
- 아이디 찾기 버튼
- 비밀번호 재설정
- 서버 통신
- ID 작성
- ID 중복확인
- ID 오류 메시지
- 비밀번호 작성
- 비밀번호 확인 작성
- 비밀번호 형식 확인
- 비밀번호 오류 메시지
- 회원가입 버튼
- 회원가입 완료 뷰
- 회원가입 환영시 메시지에서 이메일 색 변경
- 서버 통신
- 주인공 추가
- 사진 첨부 Action Sheet
- 주인공 사진 첨부
- 주인공 이름 작성
- 주인공 동물 선택
- 날짜 선택
- 날짜 모달
- 성별 선택
- 동적 텍스트뷰
- 텍스트필드 작성 여부에 따른 버튼 비/활성화
- 서버 통신
- 일기 작성 버튼
- 달력 제목
- 다음 달로 가기
- 이전 달로 가기
- 다음 년도로 가기
- 이전 년도로 가기
- 이모지 부착
- 일기 개수 스티거 부착
- 상세 일기 이동
- 서버 통신
- 이전 작성한 일기
- 도움글
- 사파리 딥링크
- 도움글 설명 ALERT
- '반려동물과 이별했나요' 버튼
- 동물 선택 ALERT
- 이미지 선택 여부에 따른 배경색 변경
- 서버 통신
- 텍스트 애니메이션
- 'X' 버튼 터치 시 초기화 ALERT
- 네비게이션 컨트롤러 삽입
- 다음 버튼
- 서버 통신
- URL로 이미지 받아오기
- 텍스트에서 일자 폰트 굵기와 크기 조절
- 텍스트에서 에피소드 폰트 굵기와 크기 조절
- 뒤로 가기 버튼
- 'X' 버튼 터치 시 초기화 ALERT
- 서버 통신
- 뒤로 가기 버튼
- 'X' 버튼 터치 시 초기화 ALERT
- 책 모양 커스텀 뷰 구현
- 커스텀 헤더 뷰 구현
- 조건에 따른 이모지 호출
- DateFormatter로 변환
- 다음 버튼
- 상세 일기 이동
- 서버 통신
- URL로 이미지 받아오기
- 조건에 따른 이모지 호출
- 이모지 드롭다운 구현
- 이미지 스크롤에 따른 Page Control 조정
- 동적 텍스트 뷰 구현
- 다음 화로 이동 버튼
- 이전 화로 이동 버튼
- 서버 통신
UIView.animate(withDuration: 0.5) { self.indexStackView.arrangedSubviews[index].backgroundColor = .macoWhite self.toggleButton.transform = self.isToggled ? CGAffineTransform(rotationAngle: .pi * 2): CGAffineTransform(rotationAngle: .pi) self.indexStackView.alpha = self.isToggled ? 0.0 : 1 }
UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseOut) { self.contentLabel.alpha = 1.0 }
UIView.animate(withDuration: 0.3, delay: 0.3, options: .curveEaseOut) { self.view.frame.origin.y = -position + self.topBarHeight }
이번 28기 앱잼에 참여하면서 UIImagePicker를 사용해 사용자의 카메라와 라이브러리에 접근해 이미지를 갖고 올 수 있다는 것을 알았습니다. 그리고 앱을 구현하면서 이미지와 데이터를 한번에 서버 통신하는 경우가 있는데 이를 경험해볼 수 있었습니다.
이번 28기 앱잼에 참여하면서 깃에 대한 전반적인 흐름을 알게 되었습니다. 이번에는 upstream 브랜치를 사용했는데, 저의 개인 레포지토리와 iOS 파트원들과 공유하는 업스트림과 연동 되어서, 더욱 편리하게 협업을 할 수 있었습니다. 또한, 뷰를 짤 때 조금 더 효율적인 방법을 알게 된 것 같습니다. 예를 들어, 셀을 눌렀을 때, 해당 셀에 대한 정보들 또한 다른 컬렉션 뷰를 사용해서 뷰를 짜면 reloadData()를 사용해서 더욱 효율적이고 간단하게 구현할 수 있다는 것을 알게 되었습니다.
깃플로우를 적용한 협업을 통해 깃 브랜치 관리를 효율적으로 할 수 있었습니다. Coding Convention을 정하여 가독성있는 코드 작성을 하였고 Pull Request 요청과 코드 리뷰를 통해 부족한 점을 깨닫고 많은 것을 배울 수 있었습니다. Snapkit을 이용하여 Autolayout을 잡으며 뷰의 재사용성에 대해 고민할 수 있는 좋은 기회였습니다. 💙