diff --git a/DevLog/UI/Extension/EnvironmentValues+.swift b/DevLog/UI/Extension/EnvironmentValues+.swift index a7fe565..20ead49 100644 --- a/DevLog/UI/Extension/EnvironmentValues+.swift +++ b/DevLog/UI/Extension/EnvironmentValues+.swift @@ -8,11 +8,18 @@ import SwiftUI extension EnvironmentValues { - var safeAreaInsets: EdgeInsets { self[SafeAreaInsetsKey.self] } + var sceneWidth: CGFloat { + self[SceneWidthKey.self] + } + + var sceneHeight: CGFloat { + self[SceneHeightKey.self] + } + private struct SafeAreaInsetsKey: EnvironmentKey { static var defaultValue: EdgeInsets { guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene, @@ -22,6 +29,24 @@ extension EnvironmentValues { return window.safeAreaInsets.insets } } + + private struct SceneWidthKey: EnvironmentKey { + static var defaultValue: CGFloat { + guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene else { + return UIScreen.main.bounds.width + } + return windowScene.screen.bounds.width + } + } + + private struct SceneHeightKey: EnvironmentKey { + static var defaultValue: CGFloat { + guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene else { + return UIScreen.main.bounds.height + } + return windowScene.screen.bounds.height + } + } } extension UIEdgeInsets { diff --git a/DevLog/UI/Extension/View+.swift b/DevLog/UI/Extension/View+.swift index de3f12c..a7f6a7d 100644 --- a/DevLog/UI/Extension/View+.swift +++ b/DevLog/UI/Extension/View+.swift @@ -8,28 +8,6 @@ import SwiftUI extension View { - var sceneWidth: CGFloat { - guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene - else { return UIScreen.main.bounds.width } - - return windowScene.screen.bounds.width - } - - var sceneHeight: CGFloat { - guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene - else { return UIScreen.main.bounds.height } - - return windowScene.screen.bounds.height - } - - var safeAreaInsets: UIEdgeInsets { - guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene, - let window = windowScene.windows.first - else { return UIEdgeInsets.zero } - - return window.safeAreaInsets - } - @ViewBuilder func adaptiveButtonStyle(_ color: Color? = nil) -> some View { if #available(iOS 26.0, *), color == nil { diff --git a/DevLog/UI/Home/HomeView.swift b/DevLog/UI/Home/HomeView.swift index 855031f..05ce1b5 100644 --- a/DevLog/UI/Home/HomeView.swift +++ b/DevLog/UI/Home/HomeView.swift @@ -9,6 +9,7 @@ import SwiftUI struct HomeView: View { @Environment(\.diContainer) var container: any DIContainer + @Environment(\.sceneWidth) var sceneWidth: CGFloat @StateObject private var router = NavigationRouter() @StateObject var viewModel: HomeViewModel diff --git a/DevLog/UI/Home/TodoEditorView.swift b/DevLog/UI/Home/TodoEditorView.swift index c0a6f48..1d14b98 100644 --- a/DevLog/UI/Home/TodoEditorView.swift +++ b/DevLog/UI/Home/TodoEditorView.swift @@ -11,6 +11,7 @@ import SwiftUI struct TodoEditorView: View { @StateObject var viewModel: TodoEditorViewModel + @Environment(\.safeAreaInsets) private var safeAreaInsets @Environment(\.dismiss) private var dismiss @FocusState private var field: Field? @State private var showDueDatePicker: Bool = false diff --git a/DevLog/UI/Login/LoginView.swift b/DevLog/UI/Login/LoginView.swift index 0e14824..776d6ed 100644 --- a/DevLog/UI/Login/LoginView.swift +++ b/DevLog/UI/Login/LoginView.swift @@ -10,6 +10,7 @@ import SwiftUI struct LoginView: View { @StateObject var viewModel: LoginViewModel @Environment(\.colorScheme) var colorScheme + @Environment(\.sceneWidth) var sceneWidth var body: some View { ZStack {