はじめに

こんにちは!システム開発部のYです。

VisionOSの、Windowでは右下に視線を合わせると拡大縮小できる機能が存在しています。今回はこの機能を無効にする方法を調査したため、まとめていきます。

環境

  • Swift Version: 5.9.2
  • Xcode 15.2
  • VisionOS: 1.0
  • macOS: 14.3.1

Windowとは

Windowは、macOSのWindowと同じ概念で、Safariを起動すればSafariのWindowが開き、Window内にはそのアプリのコンテンツが表示される。
Windowには、macOSのWindowとは異なる箇所があり、Window内に奥行きを持った3Dオブジェクトを表示することができる。

それ以外に、Volume, Spaceという空間コンピューティングの基本要素があります。
詳しくは、以前VisionOSの基本についてまとめた記事もあるため、気になる方はこちらを参照して下さい。

Window拡大縮小機能とは

Windowには、右下に視線を合わせると拡大縮小機能が現れ、自由自在にサイズを変更することができます。

Window拡大縮小機能を無効にする

数行のコードで実現できます。
onAppear内で、UIWindowSceneを取得しrequestGeometryUpdateでUIWindowScene.ResizingRestrictions.noneを指定します。

import SwiftUI

@main
struct sampleVisionOSApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear {
                    guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene else {
                        return
                    }
                    
                    windowScene.requestGeometryUpdate(.Vision(resizingRestrictions: UIWindowScene.ResizingRestrictions.none))
                }
        }
    }
}

これで、目線を合わせても拡大縮小できなくなります。

まとめ

今回は、Window拡大縮小機能の無効の仕方についてまとめました。
調べても情報がなく、Apple公式サンプルアプリ「Happy Beam」で無効にしていたので参考にしました。
この記事がお役に立てれば幸いです。また、間違っている点などありましたら、教えていただけると幸いです。

参考リンク

・https://gaprot.jp/2023/09/11/visionos/
・https://developer.apple.com/documentation/visionos/happybeam



ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる