SwiftUI

2023 年 11 月 12 日

visionOS 進入 Full 時,隱藏使用者的手

已複製到剪貼板


當 visionOS 的 ImmersiveSpace 被叫出來時,可以使用 upperLimbVisibility 決定是否隱藏使用者的雙手臂。

在 visionOS 中虛擬的手
在 visionOS 中虛擬的手

visionOS 在 FullImmersionStyle 時隱藏使用者的手

在 visionOS 上,當我們的 ImmersiveSpace 進入 FullImmersionStyle 時,雖然系統會將環境與其他的 App 隱藏,但仍會讓使用者能看到自己的手。為了提供更沈浸的體驗,或顯示虛擬的手,我們可以使用 upperLimbVisibility 隱藏使用者的手。

@main
struct Example: App {
    var body: some Scene {
        ImmersiveSpace {
            SolarSystem()
        }
        .upperLimbVisibility(.hidden)
    }
}

SwiftUI Visibility Enumeration

upperLimbVisibility 是一個 Scene modifier,定義如下:

func upperLimbVisibility(_ preferredVisibility: Visibility) -> some Scene

upperLimbVisibility 需傳入三種 Visibility 之一:

  • .automatic:根據元件是否能被設定 Visibility
  • .visible:元件可能被顯示
  • .hidden:元件可能被隱藏

這裡之所以都用「可能」是因為我們可以設定 Visibility,但系統不一定要理我們,我們只是設定一個偏好值,最終的結果還是由系統決定。

舉個簡單的例子,我們可以透過 listRowSeparator 顯示 List 中的分隔線,但如果所使用的 listStyle 並沒有分格線時,所設定的 visible 就會無效。

upperLimbVisibility 的 Visibility 討論

同樣的對於 upperLimbVisibility 的 Visibility 設定也不是絕對的,我們告訴 SwiftUI 一個偏好值,而最終的結果還是由系統決定。但系統不照我們所設定的偏好值的情況比較單純,就是當 immersive space 無法顯示時,系統仍會顯示使用者的手。

分享文章

已複製到剪貼板

主題文章

查看 SwiftUI

超級感謝

關於 XcodeProject

XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。


Contacts

Ricky Chuang

XcodeProject

RickyChuang.xcodeproj@gmail.com

XcodeProject 聯絡

contact.xcodeproj@gmail.com

最新文章