본문 바로가기

프로젝트/FastingTimer

00. 시작하며

이제 막 UIKit에 대한 공부를 마치고 작은 프로젝트를 진행하던 작년에 이야기다.
작은 프로젝트를 몇 개 해 봤지만 여전히 개념들은 어려웠고, 특히나 만들려고 했던 인터벌 타이머는 thread 분리와 함께 완전히 박살났다.
1초 간격으로 실행 돼야 할 코드가 어느 때는 0.5초 만에, 어느 때는 1초가 넘어서 동작하니 제대로 된 기능을 한다고 볼 수 없다.

올해는 SwiftUI를 배웠고, 다시 이전의 프로젝트를 재시동 하기 전에 시계나 타이머에 관한 프로젝트를 몇 개 해 보고자 한다.
이번에 만들어 보는 FastingTimer는 식단 관리 앱이다.
원형의 Indicator를 가지고 진행 상황을 알려주고, 매 초 업데이트 되니 내가 구현하려던 매커니즘과 동일하다고 할 수 있다.

 


Swift

 

Swift - Apple Developer

Swift is a powerful and intuitive programming language for iOS, iPadOS, macOS, tvOS, and watchOS. Writing Swift code is interactive and fun, the syntax is concise yet expressive, and Swift includes modern features developers love. Swift code is safe by des

developer.apple.com

SwiftUI

 

SwiftUI Overview - Xcode - Apple Developer

SwiftUI is an innovative, exceptionally simple way to build user interfaces across all Apple platforms with the power of Swift.

developer.apple.com

 

기능

아래의 기능을 구현한다.

  • 현재 시간을 기준으로 정해진 계획 만큼 단식과 식사의 진행 상황을 UI를 통해 표시한다.

추가적으로 아래의 기능을 추가로 구현한다.

  • iOS14 버전의 하위 지원
  • Dark, Light의 양방향 Scheme 지원
  • 미리 저장 된 몇 개의 선택지를 통해 계획을 변경

해당 프로젝트로 숙달할 수 있는 기술은 다음과 같다.

  • Ring 형태의 진행바 구현
  • 새로운 Date format 메서드와 DateFormatter 숙달
  • 새로운 Number format 과 NumberFormatter 숙달
  • UI와 분리된 동작 코드 구현
  • Calendar를 사용한 날짜 표현
  • TimerPublisher를 사용한 초 단위의 동작 구현
  • enum과 Foreach를 사용한 열거형 UI구현

 

참고


https://youtu.be/pdYTtbOl9YQ

 

'프로젝트 > 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