WWDC25「SwiftUI新機能」(What's New in SwiftUI)まとめ

[Apple Developer](https://developer.apple.com/jp/videos/play/wwdc2025/256/)で全体公開されている内容のまとめです。NDAで保護された内容は含まれていません。スクリーンショットはこの動画から引用しています。
※自分用メモのためiOS中心、RealityKitなど一部省略しております。
## Liquid Glass
各プラットフォーム共通で導入された半透明のガラスエフェクト。SwiftUIで通常のViewを記述していれば、大半は自動的に反映される。
### ナビゲーション
iPadOS / macOS / tvOSでは、NavigationSplitViewがフロートデザインに変更される。コードの変更は不要。
![スクリーンショット 2025-06-10 15.45.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/5f985572-ffb6-4951-87d4-e82cf1a07fea.png)

iOSではTabViewが従来の画面下全部を占領するデザインからコンパクトなデザインに変更された。
![スクリーンショット 2025-06-10 15.51.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/ca5b95cf-d50b-46e5-ac4c-decbcfe405f6.png)

ToolBar全体も改良されており、項目ごとに独立し画面遷移時にはアニメーションが自動付与される。
![スクリーンショット 2025-06-10 15.55.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/923e40b0-54d8-43fe-b937-faac578b7180.png)
この区切りは新規追加された```ToolbarSpacer```で指定できる。
```swift
ToolbarSpacer(.fixed, placement: .primaryAction)
```
スクロールするとToolBarの背景には自動でぼかしが入る。
### 検索バー
searchableモディファイアを使用した検索バーは、iPhoneは画面下部、iPadOSは右上（右から各言語では左上）に自動で配置される。
TabViewに検索用項目を記述すると、他の項目から独立し自動で折り畳まれる検索ボタンを設置できる。
```swift
Tab(role: .serch) { ~ }
```
![スクリーンショット 2025-06-10 16.20.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/bdc3f0da-0c72-41c6-8866-9409aced735a.png)
### その他のView
```Toggle()```、```Picker()```、```Slider()```などの標準的なViewもデザインが変更されており、SwiftUIの標準スタイルを使用していれば自動で適用される。
（注記：ButtonStyleには新たに[.glass](https://developer.apple.com/documentation/swiftui/primitivebuttonstyle/glass)が追加されている）
### カスタムView
新たに追加された```.glassEffect()```をViewに適用させることで、標準スタイルが適用されていないViewにもガラス効果を反映させることができる。
## iPadOSのウィンドウ表示
iPadでもMacに近いウィンドウ表示が導入され、メニューバーや信号機マークなどMacライクなUIが追加された。
### メニューバー
macOSと同様、iPadOSでもマウス操作時用にメニューバーが実装された。macOSと同じく```.commands```でメニューバーを表示できる。
![スクリーンショット 2025-06-10 16.23.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/4010c43a-f301-406d-befe-9a42cb84c018.png)
### ウィンドウサイズ変更への適応
アプリをフルスクリーンで固定するInfo.plistの```UIRequiresFullScreen```キーは非推奨となり、ウィンドウサイズを変更できるようにすることが求められる。
詳細は[iPadアプリのデザインの向上](https://developer.apple.com/jp/videos/play/wwdc2025/208/)を参照。
## アクセシビリティ
[アシスティブアクセス](https://support.apple.com/ja-jp/guide/assistive-access-iphone/welcome/ios)（シンプルで大きな画面になるモード）の場合、```AssistiveAccess```でViewを切り分けられるようになる。
![スクリーンショット 2025-06-10 16.42.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/6b6bcff0-93a3-48d8-8a8c-e98ded1589bf.png)
## ウィジェット
### コントロールセンター（macOS / watchOS)
macOS / watchOSのコントロールセンターにiO
S同様にアプリから項目を追加できるようになる。
### ウィジェット（visionOS / CarPlay)
visionOS / CarPlayでiOSと同様のウィジェットが使用できる。独自のウィジェットを作成できるほか、macOSと同じくiPhone専用アプリのウィジェットも使用できる。
visionOSではユーザーからの距離に応じて表示を変更できる。
![スクリーンショット 2025-06-10 16.57.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/39264085-aaf0-4b1f-9a5a-5f88c61c4926.png)
## SwiftUIビューの追加
### WebView
WKWebViewを使用できる```WebView()```が追加。新規追加された```WebPage```モデルを使用して操作することもできる。
```Swift
struct InAppBrowser: View {
    @State private var page = WebPage()
    var body: some View {
        WebView(page)
            .ignoresSafeArea()
            .onAppear {
                page.load(URLRequest(url: URL))
            }
    }
}
```
詳細は[SwiftUI向けWebKit](https://developer.apple.com/jp/videos/play/wwdc2025/231/)の紹介を参照
### 3Dチャート
Swift Chartsに```Chart3D```とZ軸のモディファイアが追加され、3Dグラフを表示できるようになった。
![スクリーンショット 2025-06-10 17.22.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/6ec9c305-52c2-442f-a80f-1289d51622fc.png)
### 複数ファイルのドラック&ドロップ(macOS)
macOSで複数ファイルのドラック&ドロップができるようになった。
![スクリーンショット 2025-06-10 17.24.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/f58867e7-4b25-4275-bc1d-9654e1d37f21.png)
また「ドラックしてゴミ箱に入れる」処理などもできるようになった。
![スクリーンショット 2025-06-10 17.26.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4095975/2a6c332e-bb8d-493e-9f63-7cd08e648fd9.png)
### リッチテキスト
```Text()```や```TextEditor()```などでAttributedString(リッチテキスト)に対応する。変数の型をStringからAttributedStringに変更すると、システムが自動で書式設定メニューを追加する。
詳細は「[Code Along：SwiftUIのAttributedStringを使って優れたテキスト体験を実現](https://developer.apple.com/jp/videos/play/wwdc2025/280/)」を参照。