From daa757f4d90cfb100012b45f6455a8fc85f0494a Mon Sep 17 00:00:00 2001 From: Zaphod Beeblebrox Date: Wed, 22 May 2024 01:56:06 +0200 Subject: [PATCH] Patch 0.5.3 fix: - Fixed the problem with changing the screen orientation (#17) --- Sources/Internal/Managers/ScreenManager.swift | 11 ----------- Sources/Internal/Views/NavigationView.swift | 12 +++++++----- Sources/Public/Public+NavigatableView.swift | 6 +++--- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/Sources/Internal/Managers/ScreenManager.swift b/Sources/Internal/Managers/ScreenManager.swift index a81c588..a480088 100644 --- a/Sources/Internal/Managers/ScreenManager.swift +++ b/Sources/Internal/Managers/ScreenManager.swift @@ -31,14 +31,3 @@ extension ScreenManager { shared.safeArea.right = reader.safeAreaInsets.trailing } } - -// MARK: - Orientation -extension ScreenManager { - var orientation: Orientation { switch size.width > size.height { - case true: .landscape - case false: .portrait - }} -} -extension ScreenManager { enum Orientation { - case portrait, landscape -}} diff --git a/Sources/Internal/Views/NavigationView.swift b/Sources/Internal/Views/NavigationView.swift index b39c09d..4f900dc 100644 --- a/Sources/Internal/Views/NavigationView.swift +++ b/Sources/Internal/Views/NavigationView.swift @@ -11,14 +11,13 @@ import SwiftUI struct NavigationView: View { + let config: NavigationGlobalConfig @ObservedObject private var stack: NavigationManager = .shared @ObservedObject private var screenManager: ScreenManager = .shared @State private var temporaryViews: [AnyNavigatableView] = [] @State private var animatableData: AnimatableData = .init() - private let config: NavigationGlobalConfig - init(rootView: some NavigatableView, config: NavigationGlobalConfig?) { NavigationManager.setRoot(rootView); self.config = config ?? .init() } var body: some View { ZStack { ForEach(temporaryViews, id: \.id, content: createItem) } .ignoresSafeArea(.container) @@ -32,7 +31,7 @@ private extension NavigationView { .padding(.top, getTopPadding(item)) .padding(.bottom, getBottomPadding(item)) .frame(maxWidth: .infinity, maxHeight: .infinity) - .background(getBackground(item)) + .background(getBackground(item).compositingGroup()) .opacity(getOpacity(item)) .scaleEffect(getScale(item)) .offset(getOffset(item)) @@ -146,8 +145,11 @@ private extension NavigationView { let rotationTranslation = calculateRotationTranslationValue(view) return rotationTranslation } - func getRotationAxis() -> (x: CGFloat, y: CGFloat, z: CGFloat) { (x: 0.000000001, y: 1, z: 0) } - func getRotationPerspective() -> CGFloat { 1.6 } + func getRotationAxis() -> (x: CGFloat, y: CGFloat, z: CGFloat) { (x: 0.00000001, y: 1, z: 0.00000001) } + func getRotationPerspective() -> CGFloat { switch screenManager.size.width > screenManager.size.height { + case true: 0.52 + case false: 1 + }} } private extension NavigationView { func canCalculateRotation(_ view: AnyNavigatableView) -> Bool { diff --git a/Sources/Public/Public+NavigatableView.swift b/Sources/Public/Public+NavigatableView.swift index 821d263..5cc21a3 100644 --- a/Sources/Public/Public+NavigatableView.swift +++ b/Sources/Public/Public+NavigatableView.swift @@ -12,9 +12,9 @@ import SwiftUI // MARK: - Initialising public extension NavigatableView { - func implementNavigationView(config: NavigationGlobalConfig? = nil) -> some View { GeometryReader { reader in - NavigationView(rootView: self, config: config) - .onAppear { ScreenManager.update(reader) } + func implementNavigationView(config: NavigationGlobalConfig = .init()) -> some View { GeometryReader { reader in + NavigationView(config: config) + .onAppear { ScreenManager.update(reader); NavigationManager.setRoot(self) } .onChange(of: reader.size) { _ in ScreenManager.update(reader) } .onChange(of: reader.safeAreaInsets) { _ in ScreenManager.update(reader) } }}