
iOS 13 에서 변경된 UIModalPresentationStyle 해킹하기
두줄요약
iOS 13의 모달 기본 표시 방식 변경으로 발생한 전체 화면 인터페이스 문제를 다뤘습니다. Swift 타입 스코프 우선순위와 typealias로 기본 네비게이션 컨트롤러 동작을 일괄 변경했습니다.
문제 상황
- iOS 13에서
UIViewController.modalPresentationStyle기본값이 변경되며 전체 화면 전환 기반 인터페이스 손상 UINavigationController를 모달로 표시하는 모든 호출부에.fullScreen설정이 필요한 반복 수정 부담
선택 이유
- Method Swizzling은 시스템·서드파티 구현에 영향을 줄 수 있는 런타임 조작 위험
- 커스텀
UINavigationController직접 치환은 대규모 수정과 향후 누락 가능성
구조와 흐름
- 프로젝트 모듈에서
UIKit.UINavigationController를 상속한 전체 화면 전용 클래스 정의 typealias UINavigationController = _FullScreenModalNavigationController로 프로젝트 내 타입 참조 우선순위 변경- 모든 생성자에서
modalPresentationStyle = .fullScreen설정, 원본 클래스는UIKit.UINavigationController로 명시적 접근
주의할 점
- 동일 이름 타입 참조가 프로젝트 전반에서 커스텀 네비게이션 컨트롤러로 대체되는 범위
- UIKit 원본 네비게이션 컨트롤러 필요 시 모듈 네임스페이스 명시 필요




