當 visionOS 的 ImmersiveSpace 被叫出來時,可以使用 upperLimbVisibility
決定是否隱藏使用者的雙手臂。
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 無法顯示時,系統仍會顯示使用者的手。
關於 XcodeProject
XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。