Explanation
2024년도의 첫번째 포스팅이네요, 다들 새해 복 많이 받으세요!!
오늘은 간단하게 SwiftUI 관련 짧은 포스팅이랍니다.
요즘 SwiftUI를 사용해서 MacOS의 애플리케이션을 만들고 있는데요. 그러던 중 'NavigationSplitView'를 사용할 때, 사이드바가 활성화 되어 있는지를 확인할 수 있는 API를 따로 지원하지 않더라고요.
그래서 사이드바의 활성화 여부를 알 수 있는 방법을 고민하다 알아낸 방법을 적어보려 합니다.
1. GeometryReader를 사용한 사이드바 활성화 여부 확인
import SwiftUI
struct ContentView: View {
@State private var isSidebar: Bool = false
var body: some View {
GeometryReader { geometry in
NavigationSplitView {
Text("Sidebar")
} detail: {
GeometryReader { innerGeometry in
Text("isSidebar: \(String(isSidebar))")
.padding()
.onChange(of: innerGeometry.size) { oldValue, newValue in
isSidebar = geometry.size.width - innerGeometry.size.width > 0
}
}
}
}
}
}
#Preview {
ContentView()
}
짜잔! 아주 간단한 코드인데요.
GeometryReader 라는 크기를 알려주는 컨테이너 뷰를 사용해서, 전체 너비와 컨텐츠 영역의 너비를 비교하면 이렇게 현재 사이드바의 활성화 상태를 알 수 있답니다.



