번호 : 007, 작성일자: 2025-02-24

2025.02.17 ~ 2025.02.23

🙈 UINavigationBar 숨김 처리


iOS앱에서 화면을 전환할 때 UINavigationController를 통해 화면을 전환할 수 있습니다.

화면이 전환된 시점에 뷰컨트롤러 생명주기에서 네비게이션바를 숨김처리할 때 주의할 부분이 있습니다.

예를 들어, A화면 → B화면으로 push로 전환하는 경우 A화면의 viewDidDisappear에서 네비게이션바를 숨김해제하고 B화면의 viewWillAppear에서 네비게이션바 숨김을 하면 결론적으로 B화면에서 네비게이션바는 숨겨지지 않는다.

이유는 A화면의 viewDidDisappear보다 B화면의 viewWillAppear가 먼저 호출되기 때문입니다.

⚡️ Flutter 로그인 플로우 포팅작업


기존 iOS 프로젝트에서 로그인 이전 코드들은 모두 Flutter로 로그인 이후는 Flutter의 메서드채널을 활용하여 네이티브 화면을 연결하도록 하는 작업을 진행했다.

일단 Flutter로 포팅작업을 진행하면서 느낀점을 요약하면

  1. Hot Reload, 멀티플랫폼 구현등으로 인해 개발 생산성이 좋은 것 같다.
  2. 네이티브 코드와 통신작업도 꽤나 안정적이였다.
  3. 폰트, 색상, 다이어로그등은 미세하게 네이티브와 차이가 있다.
  4. 첫 빌드시간이 오래걸리고 용량도 많이 차지하는 것 같다.

네이티브 코드를 연결하면서 주의할 점을 요약하면

  1. SceneDelegate를 사용하는 경우 기본 생성된 프로젝트에서 추가 설정을 해줘야 한다.
  2. Build Configuration이 Debug, Profile, Release로 구분되고 전처리문을 사용하기 위한 플래그가 적용되지 않아 있는 경우 Build Settings → Active Compilation Conditions 에서 플래그를 설정해줘야 한다.
  3. iOS 14이상 기기에서는 Debug 상태로는 직접 앱을 실행할 수 없다. (IDE에서 실행한 경우는 예외)

🙋🏻‍♂️ 기타 사항


  1. URL링크를 호출할 때 사용하는 open 메서드를 사용할 때 메인스레드에서 동작해야 링크 이동 중 앱이 돌아올 때 지연되거나 멈추는 현상이 없습니다. (복기)