diff --git a/Sources/IONCameraLib/Extensions/UIApplication+Window.swift b/Sources/IONCameraLib/Extensions/UIApplication+Window.swift new file mode 100644 index 0000000..6fb614a --- /dev/null +++ b/Sources/IONCameraLib/Extensions/UIApplication+Window.swift @@ -0,0 +1,12 @@ +import UIKit + +extension UIApplication { + /// The application's main window. + static var firstKeyWindowForConnectedScenes: UIWindow? { + UIApplication + .shared + .connectedScenes + .flatMap { ($0 as? UIWindowScene)?.windows ?? [] } + .last { $0.isKeyWindow } + } +} diff --git a/Sources/IONCameraLib/Interfaces/Editor/IONCAMRImageEditorView.swift b/Sources/IONCameraLib/Interfaces/Editor/IONCAMRImageEditorView.swift index 0694068..92a6ccc 100644 --- a/Sources/IONCameraLib/Interfaces/Editor/IONCAMRImageEditorView.swift +++ b/Sources/IONCameraLib/Interfaces/Editor/IONCAMRImageEditorView.swift @@ -88,7 +88,7 @@ struct IONCAMRImageEditorView: View { .padding() } .onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in - guard isPortrait != UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.isPortrait else { return } + guard isPortrait != UIApplication.firstKeyWindowForConnectedScenes?.windowScene?.interfaceOrientation.isPortrait else { return } isPortrait.toggle() croppingOffset = .init(width: 0.0, height: 0.0) croppingWidthMagnification = 1.0 diff --git a/Sources/IONCameraLib/Interfaces/IONCAMREditorBehaviour.swift b/Sources/IONCameraLib/Interfaces/IONCAMREditorBehaviour.swift index ef4262c..3770145 100644 --- a/Sources/IONCameraLib/Interfaces/IONCAMREditorBehaviour.swift +++ b/Sources/IONCameraLib/Interfaces/IONCAMREditorBehaviour.swift @@ -6,7 +6,7 @@ final class IONCAMREditorBehaviour: NSObject, IONCAMREditorDelegate { func editPicture(_ image: UIImage, _ handler: @escaping (UIViewController) -> Void) { DispatchQueue.main.async { - let isPortrait = UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.isPortrait ?? false + let isPortrait = UIApplication.firstKeyWindowForConnectedScenes?.windowScene?.interfaceOrientation.isPortrait ?? false let imageEditorView = IONCAMRImageEditorView(delegate: self, image: image, isPortrait: isPortrait) let viewController = UIHostingController(rootView: imageEditorView) viewController.modalPresentationStyle = .fullScreen