🪟

【SwiftUI】ウィンドウサイズの取得方法

2024/10/24に公開

現在表示されているウィンドウサイズの取得方法は以下のコードになります。

guard let window = UIApplication.shared.connectedScenes.first as? UIWindowScene else { return }
let screenSize: CGRect = window.screen.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height

1. UIApplication.shared.connectedScenes.first

connectedScenesはアプリケーションに関連するすべてのアプリのウィンドウを取得します。firstを使って最初のシーンを取得しています。

最初のシーン」とは、UIApplication.shared.connectedScenes.firstで取得されるシーン(UIScene)の中で最初に見つかるものを指します。iOSでは、アプリがマルチタスクや複数のウィンドウをサポートする場合、複数のSceneを持つことができます。

通常、アプリケーションが1つのウィンドウしか持っていない場合、この「最初のシーン」は唯一のシーン、すなわち現在表示されているウィンドウに対応するシーンです。

2. as? UIWindowScene

最初に接続されているシーンがUIWindowSceneかどうかをチェックし、キャストしています。

iOS 13以降、UISceneはアプリのシーンを表す抽象型であり、UIWindowSceneはその具体的なサブクラスです。このキャストは、取得したシーンがウィンドウに関連するものであるかを確認し、安全に操作を続けるために行います。

3. window.screen.bounds

window.screen.bounds全体のサイズ(幅、高さ)をCGRectで返します。
boundsの中身(width, height)の型はCGFloatです。

Discussion