
내비게이션 바(Navigation Bar)는 앱 화면 상단에 표시되는 UI 요소로, 현재 화면의 제목과 뒤로 가기 버튼 등 핵심 탐색 기능을 담당합니다. 애플의 공식 디자인 가이드라인과 개발자 문서는 아래 링크에서 확인할 수 있습니다.
https://developer.apple.com/design
https://developer.apple.com/documentation
내비게이션 바 높이를 알아야 하는 이유
여러 개의 뷰 컨트롤러(View Controller)가 서로 다른 UI와 요구 사항을 갖고 있다면, 내비게이션 바의 정확한 높이를 파악하는 것이 매우 중요합니다. 높이를 모른 채 레이아웃을 잡으면 콘텐츠가 내비게이션 바에 가려지거나 화면 배치가 어긋나는 문제가 발생하기 쉽습니다. 또한 필요에 따라 높이를 조정해야 할 때도 기본적인 구조를 이해하고 있어야 작업이 수월합니다. 지금부터 코드를 통해 내비게이션 바의 높이를 구하는 방법을 살펴보겠습니다.
Swift 코드로 내비게이션 바 높이 구하기
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let navBarHeight = UIApplication.shared.statusBarFrame.size.height +
(navigationController?.navigationBar.frame.height ?? 0.0)
print(navBarHeight)
}
}
위 코드는 상태 표시줄(Status Bar)의 높이와 내비게이션 바의 프레임 높이를 더해 전체 높이를 계산합니다. navigationController가 nil일 가능성에 대비해 옵셔널 체이닝과 기본값 0.0을 함께 사용해 안전하게 처리했다는 점도 눈여겨볼 만합니다.
참고: iOS 13 이상에서의 주의 사항
UIApplication.shared.statusBarFrame은 iOS 13부터 deprecated(사용 중단 권고) 상태입니다. 최신 iOS 버전을 지원하는 앱이라면 UIWindowScene의 statusBarManager를 활용하거나, 뷰의 safeAreaInsets.top 값을 사용하는 방식을 권장합니다.
if let windowScene = view.window?.windowScene as? UIWindowScene {
let statusBarHeight = windowScene.statusBarManager?.statusBarFrame.height ?? 0
let navBarHeight = navigationController?.navigationBar.frame.height ?? 0
print(statusBarHeight + navBarHeight)
}
이처럼 내비게이션 바 높이를 코드로 직접 계산하면, 다양한 기기와 화면 크기에서도 안정적인 레이아웃을 구성할 수 있습니다.