Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

Swift로 iOS 앱에서 상태 표시줄 숨기는 방법 2가지 (Info.plist · AppDelegate)

앱을 개발하다 보면 상태 표시줄(status bar)이나 내비게이션 바를 숨기고, 정말 보여주고 싶은 콘텐츠만 화면에 꽉 차게 표시해야 하는 경우가 종종 있습니다. 게임, 동영상 플레이어, 이미지 뷰어처럼 몰입감이 중요한 화면이 대표적인 예입니다. 이번 글에서는 Swift를 사용해 iOS 앱에서 상태 표시줄을 숨기는 방법을 단계별로 살펴보겠습니다.

iOS에서 상태 표시줄을 숨기는 방법은 크게 두 가지가 있으며, 두 방법 모두 공통으로 거쳐야 하는 사전 설정 단계가 있습니다.

공통 사전 설정

  • Xcode에서 프로젝트의 Info.plist 파일을 엽니다.
  • "View controller-based status bar appearance"(뷰 컨트롤러 기반 상태 표시줄 외관) 키를 추가하고 값을 NO로 설정합니다.

이 설정은 아래에서 소개할 두 가지 방법 모두에 공통으로 필요한 단계입니다. 이 키를 NO로 설정하면 각 뷰 컨트롤러가 개별적으로 상태 표시줄을 제어하지 않고, 앱 전역 설정이 우선 적용됩니다.

방법 1: Info.plist에서 설정하기

코드를 한 줄도 작성하지 않고 Info.plist만으로 해결하는 방법입니다. 같은 Info.plist 파일에 "Status bar is initially hidden"(상태 표시줄 초기 숨김) 키를 추가하고 값을 YES로 설정하면 됩니다.

이렇게 하면 앱이 실행되는 순간부터 상태 표시줄이 숨겨진 상태로 시작됩니다. 앱 전체에서 상태 표시줄을 완전히 없애고 싶을 때 가장 간편한 방법입니다.

방법 2: AppDelegate에서 코드로 설정하기

  • AppDelegate.swift 파일을 엽니다.
  • application(_:didFinishLaunchingWithOptions:) 메서드 안에 다음 한 줄을 추가합니다.
UIApplication.shared.isStatusBarHidden = true

이렇게 하면 애플리케이션 전체에서 상태 표시줄이 숨겨집니다. 실제 코드는 아래와 같습니다.

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // 앱 실행 후 커스터마이징 지점
    UIApplication.shared.isStatusBarHidden = true
    return true
}

실행 결과

두 방법 모두 결과는 동일합니다. 앱을 실행하면 화면 상단의 시간, 배터리, 신호 강도가 표시되던 상태 표시줄이 사라지고, 그만큼 콘텐츠 영역이 넓어집니다.

Swift로 iOS 앱에서 상태 표시줄 숨기는 방법 2가지 (Info.plist · AppDelegate)

참고: 특정 화면에서만 숨기고 싶다면?

앱 전체가 아니라 특정 뷰 컨트롤러에서만 상태 표시줄을 숨기고 싶다면, 공통 설정에서 키 값을 NO 대신 YES(또는 기본값)로 유지한 뒤 해당 뷰 컨트롤러에서 다음 프로퍼티를 오버라이드하면 됩니다.

override var prefersStatusBarHidden: Bool {
    return true
}

이 방식을 사용하면 화면별로 상태 표시줄 표시 여부를 자유롭게 제어할 수 있어, 몰입형 화면과 일반 화면이 섞여 있는 앱에서 특히 유용합니다. 또한 UIApplication.shared.isStatusBarHidden의 setter는 iOS 13부터 deprecated되었으므로, 최신 프로젝트에서는 prefersStatusBarHidden 오버라이드 방식을 사용하는 것을 권장합니다.