iOS앱에서 화면을 전환할 때 UINavigationController를 통해 화면을 전환할 수 있습니다.
화면이 전환된 시점에 뷰컨트롤러 생명주기에서 네비게이션바를 숨김처리할 때 주의할 부분이 있습니다.
예를 들어, A화면 → B화면으로 push로 전환하는 경우 A화면의 viewDidDisappear에서 네비게이션바를 숨김해제하고 B화면의 viewWillAppear에서 네비게이션바 숨김을 하면 결론적으로 B화면에서 네비게이션바는 숨겨지지 않는다.
이유는 A화면의 viewDidDisappear보다 B화면의 viewWillAppear가 먼저 호출되기 때문입니다.
⚡️ Flutter 로그인 플로우 포팅작업
기존 iOS 프로젝트에서 로그인 이전 코드들은 모두 Flutter로 로그인 이후는 Flutter의 메서드채널을 활용하여 네이티브 화면을 연결하도록 하는 작업을 진행했다.
일단 Flutter로 포팅작업을 진행하면서 느낀점을 요약하면
- Hot Reload, 멀티플랫폼 구현등으로 인해 개발 생산성이 좋은 것 같다.
- 네이티브 코드와 통신작업도 꽤나 안정적이였다.
- 폰트, 색상, 다이어로그등은 미세하게 네이티브와 차이가 있다.
- 첫 빌드시간이 오래걸리고 용량도 많이 차지하는 것 같다.
네이티브 코드를 연결하면서 주의할 점을 요약하면
- SceneDelegate를 사용하는 경우 기본 생성된 프로젝트에서 추가 설정을 해줘야 한다.
- Build Configuration이 Debug, Profile, Release로 구분되고 전처리문을 사용하기 위한 플래그가 적용되지 않아 있는 경우 Build Settings → Active Compilation Conditions 에서 플래그를 설정해줘야 한다.
- iOS 14이상 기기에서는 Debug 상태로는 직접 앱을 실행할 수 없다. (IDE에서 실행한 경우는 예외)
🙋🏻♂️ 기타 사항
- URL링크를 호출할 때 사용하는 open 메서드를 사용할 때 메인스레드에서 동작해야 링크 이동 중 앱이 돌아올 때 지연되거나 멈추는 현상이 없습니다. (복기)