ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [출시를 향한 여정] 타이머 어플 - 1. 타이머 어플을 만드려는 이유
    iOS 2021. 8. 15. 17:47

     

     

    목차

     

    1. iOS로 분야를 정한 이유

    2. iOS로 진로를 정한 뒤

    3. 타이머 어플을 만드려는 이유

    4. 현재 진행 상태

     


    1. iOS로 분야를 정한 이유 

    2021년 1월까지 전문 분야를 무엇으로 해야하나 정하지 못하였습니다. 프론트엔드, 백엔드, 안드로이드, iOS, 서버 등등.. 중에 무엇을 도메인으로 잡아야 행복하게 개발을 할 수 있을까에 대한 생각을 많이 하였습니다.

     

    결국은 iOS를 선택하였는데 그 이유는,

    1. 아이폰을 7년째 쓰고 있다.

    2. 맥북을 3년째 쓰고 있다.

    3. iOS 의 설명하지 못할 스무스함이 좋다.

    4. iOS 가 소프트웨어적으로 탄탄하게 설계되었다고 생각한다.

    5. 아이폰과 맥의 연동성을 사랑한다.

    6. 웹은 사용시 불편함이 느껴지지 않지만 어플은 불편함이 눈에 보인다.

    7. 내가 사용하고 싶은 어플을 만들고 싶다.


    2. iOS로 진로를 정한 뒤 

    야곰님의 Swift 문법책을 뗀 후 공식문서를 읽고 있고 Swift 를 사용하여 알고리즘을 풀며 차츰 이 언어와 친해지고 있습니다.

    야곰님의 책을 다 읽고 난 후 곧바로 '친절한 재은씨의 스위프트 기본편'을 보며 iOS 의 기본을 익혔습니다. 기본편을 완독한 후 '친절한 재은씨의 스위프트 실전편'을 '커스텀 뷰' 챕터까지 읽은 후 이제는 출시를 목표로 어플을 만들고 있습니다.

     


    3. 타이머 어플을 만드려는 이유

    저는 컴퓨터를 사용할 때 25분을 집중하고 5분을 휴식합니다. 포모도로 공부법에 의거해 형성된 습관인데 집중력이 25분이 넘어가면 떨어진다고 알고 있고 눈 건강을 위해 휴식을 주기 위함입니다. 그러한 이유로 타이머 프로그램을 애용합니다. 'Flow' 라는 맥용 어플입니다.

     

    맥용 타이머 어플 'Flow'

    Flow 어플을 좋아하는 이유 중 하나는 상태바에 남은 시간이 표시된다는 점입니다.

     

    상태바에 현재 남은 분:초 가 보여진다.

     

    힘들이지 않고 바로 남은 시간을 확인할 수 있다는 점이 편리함을 선사해주는 것 같습니다. 하지만 이미 나와있는 아이폰 타이머 어플에는 아이폰의 상태바에 시간을 표시해주는 어플이 없었습니다. 그리하여 아이폰의 상태바에 남은 시간을 표시해주는 타이머 어플을 만들고 싶습니다. 이 기능을 만드는데까지 봉착되리라 생각되는 어려움을 나열해 보겠습니다.

     

    1. 애플 휴먼 인터페이스 가이드라인

    상태바에 시간을 표시하는 것이 애플 가이드라인에 위배되는 건지 의문이 가지만 'UnicornHTTPS'라는 VPN 어플이 상태바에 'VPN'표시를 띄우는 것을 보니 허용은 되는것 같습니다.

    상태바에 'VPN'이 표시된다.

     

    2. 성능 하락

    초마다 업데이트 해주는 것이 아이폰 성능을(배터리나 CPU) 떨어트리는 요인이 되는지는 한번 공부해봐야할 문제인 것 같습니다. 아무래도 초마다 화면을 바꿔준다면 배터리는 빨리 닳을것 같은게 제 추측입니다.

     

    3. 노치가 있는 아이폰의 상태바 공간 부족

    아이폰의 노치가 없다면 시간을 표시할 공간이 충분하겠지만 최신의 아이폰들은 모두 노치가 있습니다. 이는 시간 박스를 작게 줄이거나 '분'만 표시하는 등 크기를 줄임으로써 해결할 수 있을지 모르겠습니다.

     


    4. 현재 진행 상태

    어플을 만들기 시작한지 2주가 된 지금, 아직 완성은 못했지만 생각보다 많은 것을 배우고 있습니다. 개발은 만들면서 배운다는 말에 심히 동감되는 2주였습니다. 지금까지 진행된 경과를 간단하게 나열해보겠습니다.

     

    1. 커스텀 뷰로 시간을 표시하는 부분을 만들었고 이 뷰를 TimerView 라고 칭했습니다. TimerView 는 세개의 UILabel 로 구성되어있으며 가장 왼쪽 레이블은 '분'을 표시하고 가운데 레이블은 분과 초를 분리해주는 ':' 를 표시하며, 오른쪽 레이블은 '초'를 표시하였습니다.

     

    2. 스위프트의 Timer 클래스를 이용해 1초씩 줄어드는 기능을 구현하였습니다.

     

    3. TimerView 와 ViewController 두 개의 클래스만을 이용해 기능을 구현하려고 하니 ViewController 가 하는일이 많아졌습니다. TimerView도 마찬가지로 무겁지 않은 커스텀뷰로 남기고 싶었습니다. 그리하여 MVVM 으로 리팩토링하였습니다. MVVM으로 리팩토링한 것은 다음 포스트에 설명하겠습니다.

     

    4. 타이머뷰를 클릭하면 타이머가 멈추고, 멈춘 타이머를 클릭하면 다시 시간이 흐르게 하고 싶었습니다. 이를 위해 타이머뷰의 touchesEnded 가 호출될 시에 호출 여부를 ViewController에 알려야 했습니다. 델리게이트 패턴을 이용하여 해결하였습니다.

     

     

    현재까지 구현된 타이머

     

     

     

Designed by Tistory.