[SwiftUI][macOS] UtilityWindow

SwiftUI2021

     
⌛️ 1 min.

macOS15 から使用できるようになった UtilityWindow を確認します

環境&対象

以下の環境で動作確認を行なっています。

  • macOS15.0.1 Sequoia
  • Xcode 16.1 Beta3
  • Swift 5.9

UtilityWindow

macOS15 で導入されたウィンドウです。

明示的に書かれていませんが、AppKit の Panel に相当するようです。
SwiftUI 的には、macOS15 で導入していますが、このタイプのウィンドウは以前から存在はしていました。

以下のような 外観を持ちます。

UtilityWindow

比較しないとわかりにくいですが、タイトルバーが少し細い(低い)です。

以下のような特徴を持ちます。
・FocusedValue は、メイン Scene (フォーカスされている Scene )のものを参照できます
・常に最前面に表示されます
・アプリケーションが 非アクティブになると非表示になります
・タイトルクリック等で明示的に操作しないと フォーカスは持ちません
・フォーカスされている時は、Escape キーで非表示にできます
・デフォルトでは、最小化には対応しません

UtilityWindow@SwiftUI

参照すべきドキュメントは以下です。


参考
UtilityWindowApple Developer Documentation

わかりにくいですが、Scene の1つとして定義されています。

タイトルと id を指定できるところは、Window や WindowGroup と同じです。

作ってみる

Scene の1つなので、App 配下で作成します。

@main
struct UtilityWindowExampleApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        UtilityWindow("UtilityTitle", id: "UtilityID", content: {
            Text("Content of UtilityWindow").frame(width: 400, height:400)
        })
    }
}

上記は、content は固定ですが、アクティブな Scene の FocusedValue を参照して content を構成することができます。

# 例えば、Window はアクティブになると FocusedValue は変化するため メイン(直前にアクティブだった) Scene の FocusedValue を参照することはできません。

UtilityWindow を設定すると、開くためのメニューが “View” メニューに追加されます。

OpenUtilityWindow

なお、このメニューは、.commandsRemoved() を使用することで非表示にすることもできます。
その場合は、メイン Scene 等から開く手段を作ることが必要です。

UtilityWindow の特徴の1つに、”アプリケーションがアクティブでなくなると非表示になる” がありますが、具体的には以下のような動作を指しています。

動画の最後は、UtilityWindow にフォーカスを移して “Escape キー” を押下して非表示にしています。

まとめ

macOS15 で追加された UtilityWindow を確認しました

UtilityWindow
  • Scene の1つとして追加された
  • FocusedValue は、メインの Scene のものを参照できる
  • アプリが非アクティブになると 非表示になる

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

SwiftUI おすすめ本

SwiftUI を理解するには、以下の本がおすすめです。

SwiftUI ViewMatery

SwiftUI で開発していくときに、ViewやLayoutのための適切なmodifierを探すのが大変です。
英語での説明になってしまいますが、以下の”SwiftUI Views Mastery Bundle”という本がビジュアル的に確認して探せるので、便利です。

英語ではありますが、1ページに コードと画面が並んでいるので、非常にわかりやすいです。

View に適用できる modifier もわかりやすく説明されているので、ビューの理解だけではなく、どのような装飾ができるかも簡単にわかります。

超便利です

SwiftUIViewsMastery

販売元のページは、こちらです。

SwiftUI 徹底入門

# SwiftUI は、毎年大きく改善されていますので、少し古くなってしまいましたが、いまでも 定番本です。

Swift学習におすすめの本

詳解Swift

Swift の学習には、詳解 Swift という書籍が、おすすめです。

著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。

最新版を購入するのがおすすめです。

現時点では、上記の Swift 5 に対応した第5版が最新版です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です