Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Swift
- Singleton Design Pattern
- Git
- reactivex
- Hashable
- weak
- CoreGraphics
- UIDocumentBrowserViewController
- UIDynamicAnimator
- 오늘의성취도
- JSONEncoder
- MVP
- IOS
- PhotoKit
- uicollectionview
- UIDocument
- JSONDecoder
- CustomStringConvertible
- Equatable
- Stanford cs193p
- unowned
- rxswift
- Codable
- Observable
- AVFoundation
- NSAttributedString
- UIGestureRecognizer
- Arc
- UIBezierPath
- 에어팟
Archives
- Today
- Total
아직은 개린이
[App 제작] 오늘의 성취도 본문
App 소개
- 오늘의 성취도를 색으로 기록하고, 관리할 수 있는 어플리케이션
- 앱스토어 페이지 : https://apps.apple.com/us/app/%EC%98%A4%EB%8A%98%EC%9D%98-%EC%84%B1%EC%B7%A8%EB%8F%84/id1497859467?ign-mpt=uo%3D2
사용한 기술 및 라이브러리
- FSCalendar
- RealmSwift
- Localizing
사용한 아키텍쳐
- MVC
- Notification, Delegate, Singleton
개발 기간
- 기획부터 앱스토어에 올리기까지 17일 소요
버그 수정 후, 현재 1.3 버전까지 업데이트-> Localizing 추가 (2020.03.06)
- 코드 리팩토링 후, github에 계속 업데이트 중
구조
기능 소개
- 오른쪽 상단의 + 버튼을 눌러, 오늘 날짜의 성취도와 메모를 기록할 수 있습니다.
- 자신의 성취도 정도를 5가지 중에 선택할 수 있습니다. (Github의 contribution 색을 가져왔습니다.)
- 간단한 메모를 작성할 수 있습니다.
- 화면 하단에서 현재 보고 있는 달의 성취도 그래프를 확인할 수 있습니다.
- 캘린더에서 특정 날짜를 선택하면, 그 날의 메모 내용을 볼 수 있습니다.
- 오늘이 아니거나 기존에 저장한 정보를 바꾸고 싶다면, 메모뷰의 오른쪽 상단의 버튼을 클릭합니다.
- 캘린더는 스와이프를 통해 움직일 수도 있고, 월 부분을 탭하여 특정 월로 이동할 수도 있습니다.
어려웠던점
- 캘린더 오픈소스인 FSCalendar를 커스터마이징하는 과정
- Realm DB에 저장하기 위한 데이터 모델을 구성하는 것
- 기획 단계에서 구성했던 UI나 기능 flow가 개발을 진행하면서 계속해서 바뀌는 것
새롭게 터득한 것
- Realm이란 무엇인가
- xib 파일을 이용한 Custom Cell 만들기
- Notification, Delegate Pattern을 언제, 어떻게 적용하면 좋은지 판단할 수 있게 됨
- Custom Picker View 만들기
- 커스텀 폰트 적용법
- AppDelegate, SceneDelgate의 역할
- 앱 배포 및 업데이트 하는 법
- DateFormatter, Calender, Date 등의 쓰임법을 자유자재로 활용하기
- git을 이용한 코드 관리 습관화
- 코드 리팩토링하는 과정을 통해서 다음에 코드를 짤 때는 처음부터 구조를 잘 짜야할 것 같다는 배움을 얻음.
- 앱 Localize 적용하기. (2020.03.05 추가)
- Trello를 이용한 개발 일정 관리법
아쉬운점
- Swift 고급 문법을 이곳저곳에 써보자고 결심했는데, 어느 순간 기능 구현에만 급급해서 연습하고 싶었던 프로그래밍 방법들을 적용하지 못한 것 같다. 또한, 테스트 코드 작성에 대해서도 뒤늦게 공부하게 되어서, 정작 앱 개발에서 적용을 못한 점이 아쉽다. (MVC 패턴에서 MVP 패턴으로 바꿔보는 연습을 하면서, 해봐야할 것 같다!)
- 첫 배포때까지만해도 오늘 날짜에 해당하는 데이터만 추가, 수정이 가능했다. 하지만 막상 앱을 올리고, 내가 며칠 사용하다보니 오늘 날짜만 추가, 수정할 수 있는 점이 굉장히 불편했다. (밤 12시가 되기 전에 꼭 기록을 해야하고.. 혹여나 못하고 날짜가 넘어가면 그 날짜는 영원히 색을 채우지 못한다...). 그래서 메모 섹션의 오른쪽 상단에 버튼을 추가하여, 캘린더에서 선택한 날짜에 데이터를 추가할 수 있도록 했는데, 방식이나 화면 구성이 맘에 들지 않는다. 하지만, 아예 방식을 바꾸려면 많은 것이 바뀌어야할 것 같아서 일단 이 상태로 유지하고 있다. (2번째 업데이트에서 기능 추가)
- 성취도 입력화면에서 사용자에게 5가지의 색과 %를 매칭하여 보여주는 부분이 직관적이지 못한 것 같아서 아쉬움이 있다. 이건 하나의 색을 기준으로 slider를 두어서 사용자가 지정한 색의 그라데이션으로 성취도를 입력할 수 있게 바꾸거나 사용자가 %를 입력하면 알아서 색을 매칭해주는 방식으로 바꾸는 것이 좋을 것 같다.
- 서버를 붙인다던지, 여러 커스텀 설정이 가능하다던지.. 좀 더 확장성 있는 앱을 만들면 좋을 것 같다. (뭔가 첫 앱을 예쁘게 만들고 싶다는 생각에 기술적인 부분보다 시각적인 부분에 더 집중했던 점도 있는 것 같아서 아쉬움이 있다..)
계획
- UserNotifications 기능 추가 예정!
- 성취도 색의 기본값을 바꿀 수 있는 기능 추가 예정!
'Project' 카테고리의 다른 글
[App 제작] Ribrary (1) | 2020.03.31 |
---|---|
[부스트코스] 영화 정보 앱 (0) | 2020.02.13 |
[부스트코스] 앨범 앱 (1) | 2020.02.12 |
[부스트코스] 날씨 정보 앱 (0) | 2020.02.12 |
[부스트코스] 회원가입 화면 구현 (2) | 2020.02.12 |