iOS 17からSwiftUIに新しく導入された.inspector
モディファイアは、iPadOSの「インスペクターパネル」のように、特定のコンテンツを一時的に表示・非表示するための便利なツールだそう。
Contents 非表示
.inspector
の基本的な構文
swiftCopyEdit.inspector(isPresented: Binding<Bool>, @ViewBuilder content: () -> Content)
isPresented
:true
の場合、インスペクターを表示し、false
の場合は閉じる。content
: インスペクター内に表示するビューを定義する。
サンプル実装
インスペクターでの色変更オプションを追加
import SwiftUI
struct HomeView: View {
@State private var showInspector = false
@State private var selectedColor: Color = .purple
var body: some View {
VStack {
Button(action: {
showInspector = true
}) {
Image(systemName: "gamecontroller")
.font(.system(size: 120))
.foregroundStyle(selectedColor, .black)
}
}
.inspector(isPresented: $showInspector) {
VStack {
Text("色を選択")
.font(.headline)
Divider()
HStack {
ForEach([Color.red, Color.green, Color.blue, Color.orange, Color.purple], id: \.self) { color in
Circle()
.fill(color)
.frame(width: 40, height: 40)
.onTapGesture {
selectedColor = color
showInspector = false
}
}
}
.padding()
Button("閉じる") {
showInspector = false
}
.padding()
}
.padding()
}
}
}


.inspector
と.popover
の違い
特徴 | .inspector | .popover |
---|---|---|
表示形式 | 右側にスライド表示(iPad)、オーバーレイ表示(iPhone) | 浮き上がるポップアップ表示 |
用途 | 詳細設定や編集パネル | 簡単な補助情報やアクション |
複数のウィンドウ | 可能 | 可能 |
自動で閉じる | ユーザーが閉じるまで開いたまま | 他の部分をタップすると自動で閉じる |