Javascript #6 객체의 얕은 복사와 깊은 복사에 대해 알아봅니다.
2019-01-23
[소소한 개발 일지] NavigationSplitView에서 사이드바 활성화 여부 확인하기(SwiftUI)
2024-01-12
Explanation
2024년도의 첫번째 포스팅이네요, 다들 새해 복 많이 받으세요!!
오늘은 간단하게 SwiftUI 관련 짧은 포스팅이랍니다.
요즘 SwiftUI를 사용해서 MacOS의 애플리케이션을 만들고 있는데요. 그러던 중 ‘NavigationSplitView’를 사용할 때, 사이드바가 활성화 되어 있는지를 확인할 수 있는 API를 따로 지원하지 않더라고요.
그래서 사이드바의 활성화 여부를 알 수 있는 방법을 고민하다 알아낸 방법을 적어보려 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 라는 크기를 알려주는 컨테이너 뷰를 사용해서, 전체 너비와 컨텐츠 영역의 너비를 비교하면 이렇게 현재 사이드바의 활성화 상태를 알 수 있답니다.