2주차 iOS - 2021.08.29 ~ 2021.09.04

2022. 4. 26. 14:48오늘하루 개발 일지

 

ADD) Side Menu 추가


디자인을 따라 메인에 있는 앱 드로어를 Side Menu 라이브러리를 통해 구현하고, 추가하였다.

리스트에 있는 버튼들은 재사용이 가능하도록 만들었고, 테마에 따라 컬러가 같이 바뀌도록 구현하였다.

로그아웃 버튼을 만들고 기능을 추가하였다.

 

❗️도달한 문제

  • MVVM-C 구조를 쓰면서 Side Menu를 어떻게 추가해야 할지 한참 고민했었다. 또한 SideMenu용 DelegateProxy를 제작하려고 했으나, 기존 NaviagtionDelegate와 충돌이 일어나서 사용하지 못했다. 이건 다른 방법을 찾아야겠다.
  • RxSwift가 Logout을 할 때 생기는 에러를 Dismiss를 한번 해주고 logout을 해줌으로써 해결하였다.

 

REFACTOR) RxAnimated를 통한 앱 애니메이션 업데이트


기존에 구현했던 DiaryTextField의 Validation 에러 메시지를 조금 더 자연스럽게 보여주기 위하여 구글링을 하며 자료를 찾았다. 그러던 중 RxAnimated 라이브러리를 찾아 사용하여 애니메이션 효과와 함께 업데이트되도록 코드 리팩토링을 진행하였다.

 

UPDATE) 테마 기능 베이스 추가


일기 앱의 주요 기능 중 하나인 테마기능을 지원하기 위해 많은 고민을 했다.

View마다 LifeCycle이 다르기에, 이걸 어떻게 전역으로 뿌려줄지 고민 중이던 찰나 RxTheme라는 라이브러리를 찾게 되었다. 전역으로 관리되는 ThemeService라는 걸 구독하여 색을 바꿔주는 형식인데 깔끔하고 쓰기 좋아 보여 앱에 적용하게 되었다. 또한 image까지 설정하여 바꿀 수 있어 괜찮은 것 같다. R.swift와 결합하여 쓰면 훨씬 더 보기 깔끔하고 정리된 코드가 될 것 같다. 여러 개의 테마를 Struct로 관리하는 방법은 정말 깔끔했다.

UserDefault로 값을 저장하고 앱 실행시 그 테마로 전환하는 방법을 사용할 예정이다.

 

ADD) AppService 추가


앱의 기능들 중 Cost가 높은 것들을 Service들로 묶고 AppService 객체에 init 하여 한 객체만 생성하고 관리할 것이다.

이 AppService를 의존성 주입을 통해 필요한 곳에서 사용할 수 있도록 만들것이다. 이걸 Service Locator 패턴이라고 부르는 것 같다.

 

레퍼런스

https://sangeui.tistory.com/159

 

REFACTOR) 파일 구조 수정


파일의 구조를 수정해 조금 더 보기 편하도록 변경했다.

  • Application Group 생성
  • Extension Group 세분화