반응형
1. iOS 16+ 에서는 .toolbarBackground() 사용 가능
.toolbarBackground(.clear, for: .navigationBar)
2. iOS 15 이하에서는 UINavigationBarAppearance() 활용해 직접 설정 변경
var body: some View {
NavigationView {
VStack {
}
.onAppear {
makeNavigationBarTransparent()
}
.onDisappear {
restoreOriginalNavigationBar()
}
}
}
// 네비게이션 바를 투명하게 만드는 함수
private func makeNavigationBarTransparent() {
let newAppearance = UINavigationBarAppearance()
newAppearance.configureWithTransparentBackground()
newAppearance.backgroundColor = UIColor.clear
newAppearance.shadowColor = .clear
newAppearance.backgroundImage = UIImage() // 완전 투명하게 설정
if let navigationBar = UINavigationBar.appearance() as? UINavigationBar {
originalAppearance = navigationBar.standardAppearance
navigationBar.standardAppearance = newAppearance
navigationBar.scrollEdgeAppearance = newAppearance
navigationBar.compactAppearance = newAppearance
}
}
// 원래 네비게이션 바 상태 복원
private func restoreOriginalNavigationBar() {
if let originalAppearance = originalAppearance {
UINavigationBar.appearance().standardAppearance = originalAppearance
UINavigationBar.appearance().scrollEdgeAppearance = originalAppearance
UINavigationBar.appearance().compactAppearance = originalAppearance
}
}
728x90
반응형
'Swift iOS 앱 개발 > SwiftUI' 카테고리의 다른 글
SwiftUI 리스트 더 불러오기 - List vs. LazyVStack (1) | 2024.11.21 |
---|---|
[SwiftUI] @EnvironmentObject 와 @StateObject 비교 (+ 앱 초기 설정) (1) | 2024.08.14 |
[SwiftUI] TextEditor background color change - scrollContentBackground + iOS 15 (0) | 2024.07.09 |