이제 막 UIKit에 대한 공부를 마치고 작은 프로젝트를 진행하던 작년에 이야기다.
작은 프로젝트를 몇 개 해 봤지만 여전히 개념들은 어려웠고, 특히나 만들려고 했던 인터벌 타이머는 thread 분리와 함께 완전히 박살났다.
1초 간격으로 실행 돼야 할 코드가 어느 때는 0.5초 만에, 어느 때는 1초가 넘어서 동작하니 제대로 된 기능을 한다고 볼 수 없다.
올해는 SwiftUI를 배웠고, 다시 이전의 프로젝트를 재시동 하기 전에 시계나 타이머에 관한 프로젝트를 몇 개 해 보고자 한다.
이번에 만들어 보는 FastingTimer는 식단 관리 앱이다.
원형의 Indicator를 가지고 진행 상황을 알려주고, 매 초 업데이트 되니 내가 구현하려던 매커니즘과 동일하다고 할 수 있다.
앱
Swift
SwiftUI
기능
아래의 기능을 구현한다.
- 현재 시간을 기준으로 정해진 계획 만큼 단식과 식사의 진행 상황을 UI를 통해 표시한다.
추가적으로 아래의 기능을 추가로 구현한다.
- iOS14 버전의 하위 지원
- Dark, Light의 양방향 Scheme 지원
- 미리 저장 된 몇 개의 선택지를 통해 계획을 변경
해당 프로젝트로 숙달할 수 있는 기술은 다음과 같다.
- Ring 형태의 진행바 구현
- 새로운 Date format 메서드와 DateFormatter 숙달
- 새로운 Number format 과 NumberFormatter 숙달
- UI와 분리된 동작 코드 구현
- Calendar를 사용한 날짜 표현
- TimerPublisher를 사용한 초 단위의 동작 구현
- enum과 Foreach를 사용한 열거형 UI구현
참고
'프로젝트 > FastingTimer' 카테고리의 다른 글
05. 기능 구현 #3 (0) | 2023.02.20 |
---|---|
04. 기능 구현 #2 (0) | 2023.02.17 |
03. 기능 구현 #1 (0) | 2023.02.16 |
02. 인터페이스 디자인 #2 (0) | 2023.02.16 |
01. 인터페이스 디자인 #1 (0) | 2023.02.14 |