🪟
【SwiftUI】ウィンドウサイズの取得方法
現在表示されているウィンドウサイズの取得方法は以下のコードになります。
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