iOS/SwiftUI

[SwiftUI] 네비게이션바 알 수 없는 여백 없애버리기

crazydeer 2024. 3. 13. 08:00
반응형

https://developer.apple.com/documentation/swiftui/view/navigationbartitledisplaymode(_:)

 

navigationBarTitleDisplayMode(_:) | Apple Developer Documentation

Configures the title display mode for this view.

developer.apple.com

 

🚨 문제

SwiftUI에서 네비게이션바를 커스텀하기 위해 백 버튼을 숨기고 아래에 뷰를 작성하면 네비게이션바와 본문 뷰 사이에 알 수 없는 여백이 있는 경우가 있습니다.

.navigationBarBackButtonHidden()

 

 

네비게이션바 아래 알 수 없는 여백 이미지

 

 

🧑‍💻 코드

public struct SampleView: View {
  @State var title: String = "안녕하세유, 반가워유"
  
  public var body: some View {
    VStack {
      Text(title)
        .font(.system(size: 26, weight: .bold))
        .foregroundColor(.black)
        .padding()
      
      NavigationLink {
        ...
      } label: {
        ...
      }
      
      Spacer()
    }
    .background(Color.red.opacity(0.3))
    .navigationBarBackButtonHidden()
    .toolbar { toolbarContent() }
  }
  
  @ToolbarContentBuilder
  private func toolbarContent() -> some ToolbarContent {
    ...
  }
  
}

body 부분의 VStack을 연한 빨간색으로 감싸줬는데 위에 이미지처럼 알 수 없는 Top 여백이 생깁니다.

 

✅ 해결 방법

SwiftUI는 기본적으로 .large 속성을 갖고 있기 때문에 네비게이션바 높이가 높게 잡히기 때문에

아래 코드를 추가해줘서 위에 붙여주도록 합니다.

.navigationBarTitleDisplayMode(.inline)

번외로 .large로 한 경우 커스텀 없이 네비게이션을 만들면 아래처럼 보입니다.

.navigationTitle("네비게이션 타이틀")
.navigationBarTitleDisplayMode(.large)
.navigationBarBackButtonHidden()

 

네비게이션바 displayMode = .large 이미지

반응형