목록 보기
iOS 13 에서 변경된 UIModalPresentationStyle 해킹하기
프론트엔드

iOS 13 에서 변경된 UIModalPresentationStyle 해킹하기

스타일쉐어
스타일쉐어
2019년 9월 27일

두줄요약

iOS 13의 모달 기본 표시 방식 변경으로 발생한 전체 화면 인터페이스 문제를 다뤘습니다. Swift 타입 스코프 우선순위와 typealias로 기본 네비게이션 컨트롤러 동작을 일괄 변경했습니다.

문제 상황

  • iOS 13에서 UIViewController.modalPresentationStyle 기본값이 변경되며 전체 화면 전환 기반 인터페이스 손상
  • UINavigationController를 모달로 표시하는 모든 호출부에 .fullScreen 설정이 필요한 반복 수정 부담

선택 이유

  • Method Swizzling은 시스템·서드파티 구현에 영향을 줄 수 있는 런타임 조작 위험
  • 커스텀 UINavigationController 직접 치환은 대규모 수정과 향후 누락 가능성

구조와 흐름

  • 프로젝트 모듈에서 UIKit.UINavigationController를 상속한 전체 화면 전용 클래스 정의
  • typealias UINavigationController = _FullScreenModalNavigationController로 프로젝트 내 타입 참조 우선순위 변경
  • 모든 생성자에서 modalPresentationStyle = .fullScreen 설정, 원본 클래스는 UIKit.UINavigationController로 명시적 접근

주의할 점

  • 동일 이름 타입 참조가 프로젝트 전반에서 커스텀 네비게이션 컨트롤러로 대체되는 범위
  • UIKit 원본 네비게이션 컨트롤러 필요 시 모듈 네임스페이스 명시 필요

다음 읽기

#iOS 주제를 다룬 다른 회사 글

이 익숙함은 어디서 오는 걸까?

iOS Navigation Controller가 화면 스택의 PUSH·POP과 공용 네비게이션 바를 처리하는 방식을 설명했습니다.\n일관된 화면 전환 경험과 네비게이션 바 스타일 관리 시 주의점을 정리했습니다.

크몽
크몽
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...