使用SwiftUI構(gòu)建一個(gè)新的visionOS應(yīng)用程序,并添加特定于平臺(tái)的功能。
概述
如果您是visionOS的新手,請(qǐng)從一個(gè)新的Xcode項(xiàng)目開(kāi)始,以了解平臺(tái)功能,并熟悉visionOS的內(nèi)容和技術(shù)。當(dāng)您為visionOS構(gòu)建應(yīng)用程序時(shí),SwiftUI是一個(gè)很好的選擇,因?yàn)樗梢宰屇耆L問(wèn)visionOS功能。雖然您也可以使用UIKit構(gòu)建應(yīng)用程序的部分內(nèi)容,但您需要將SwiftUI用于許多平臺(tái)獨(dú)有的功能。
為visionOS開(kāi)發(fā)需要配備蘋果芯片的Mac。

在任何SwiftUI應(yīng)用程序中,您可以使用場(chǎng)景將內(nèi)容放置在屏幕上。場(chǎng)景包含要顯示在屏幕上的視圖和控件。場(chǎng)景還定義了這些視圖和控件在屏幕上出現(xiàn)時(shí)的外觀。在visionOS中,您可以在同一場(chǎng)景中包含2D和3D視圖,并且您可以在窗口中或作為人周圍環(huán)境的一部分顯示這些視圖。


從一個(gè)新的Xcode項(xiàng)目開(kāi)始,并添加功能以熟悉visionOS內(nèi)容和技術(shù)。在模擬器中運(yùn)行您的應(yīng)用程序,以驗(yàn)證您的內(nèi)容是否與您預(yù)期的一樣,并在設(shè)備上運(yùn)行它以查看您的3D內(nèi)容栩栩如生。
圍繞一個(gè)或多個(gè)場(chǎng)景組織內(nèi)容,這些場(chǎng)景管理應(yīng)用程序的界面。每個(gè)場(chǎng)景都包含您想要顯示的視圖和控件,場(chǎng)景類型決定了您的內(nèi)容是采用2D還是3D外觀。SwiftUI專門為visionOS添加了3D場(chǎng)景類型,還為所有場(chǎng)景類型添加了3D元素和布局選項(xiàng)。
創(chuàng)建您的Xcode項(xiàng)目
通過(guò)選擇文件>新建>項(xiàng)目,在Xcode中創(chuàng)建一個(gè)新項(xiàng)目。導(dǎo)航到模板選擇器的visionOS部分,然后選擇應(yīng)用程序模板。出現(xiàn)提示時(shí),為您的項(xiàng)目指定一個(gè)名稱以及其他選項(xiàng)。
創(chuàng)建新的visionOS應(yīng)用程序時(shí),您可以從配置對(duì)話框中配置應(yīng)用程序的初始場(chǎng)景類型。要在初始場(chǎng)景中主要顯示2D內(nèi)容,請(qǐng)選擇一個(gè)窗口作為初始場(chǎng)景類型。對(duì)于主要是3D內(nèi)容,請(qǐng)選擇一個(gè)卷。您還可以添加一個(gè)身臨其境的場(chǎng)景,將您的內(nèi)容放置在人的周圍。

當(dāng)您想創(chuàng)建從應(yīng)用程序中顯示的3D資產(chǎn)或場(chǎng)景時(shí),請(qǐng)包括Reality Composer Pro項(xiàng)目文件。使用此項(xiàng)目文件從原始形狀和現(xiàn)有的USDZ資產(chǎn)構(gòu)建內(nèi)容。您還可以使用它為您的內(nèi)容構(gòu)建和測(cè)試自定義RealityKit動(dòng)畫(huà)和行為。
修改現(xiàn)有窗口
使用標(biāo)準(zhǔn)的SwiftUI視圖構(gòu)建您的初始界面。視圖為您的界面提供基本內(nèi)容,您可以使用SwiftUI修飾符自定義它們的外觀和行為。例如,.background修飾符在您的內(nèi)容后面添加了部分透明的色調(diào):
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.background(.black.opacity(0.8))
}
ImmersiveSpace(id: "Immersive") {
ImmersiveView()
}
}
}
要了解有關(guān)如何使用SwiftUI創(chuàng)建和配置接口的更多信息,請(qǐng)參閱SwiftUI Essentials。
處理您視圖中的事件
許多SwiftUI視圖會(huì)自動(dòng)處理交互——您所做的只是提供在交互發(fā)生時(shí)運(yùn)行的代碼。您還可以將SwiftUI手勢(shì)識(shí)別器添加到視圖中,以處理點(diǎn)擊、長(zhǎng)按、拖動(dòng)、旋轉(zhuǎn)和縮放手勢(shì)。系統(tǒng)會(huì)自動(dòng)將以下類型的輸入映射到您的SwiftUI事件處理代碼:

間接輸入。這個(gè)人的眼睛表示互動(dòng)的目標(biāo)。要開(kāi)始互動(dòng),對(duì)方用一只或兩只手一起觸摸拇指和食指。額外的手指和手部動(dòng)作定義了手勢(shì)類型。

直接輸入。當(dāng)一個(gè)人的手指占據(jù)與屏幕上項(xiàng)目相同的空間時(shí),系統(tǒng)會(huì)報(bào)告交互。額外的手指和手部動(dòng)作定義了手勢(shì)類型。

鍵盤輸入。人們可以使用連接的鼠標(biāo)、觸控板或鍵盤與項(xiàng)目交互,觸發(fā)菜單命令并執(zhí)行手勢(shì)。
有關(guān)在SwiftUI視圖中處理交互的更多信息,請(qǐng)參閱SwiftUI Essentials教程中的處理用戶輸入。
構(gòu)建并運(yùn)行您的應(yīng)用程序
在模擬器中構(gòu)建并運(yùn)行您的應(yīng)用程序,看看它看起來(lái)如何。visionOS的模擬器有一個(gè)虛擬背景作為應(yīng)用程序內(nèi)容的背景。使用鍵盤和鼠標(biāo)或觸控板在環(huán)境中導(dǎo)航并與應(yīng)用程序交互。
點(diǎn)擊并拖動(dòng)應(yīng)用程序內(nèi)容下方的窗口欄,以在環(huán)境中重新定位窗口。將指針移到窗口欄旁邊的圓圈上,以顯示窗口的關(guān)閉按鈕。將光標(biāo)移動(dòng)到窗口的一個(gè)角落,將窗口欄變成調(diào)整大小控件。
應(yīng)用程序無(wú)法控制窗口在空間中的位置。系統(tǒng)將每個(gè)窗口放置在其初始位置,并根據(jù)與應(yīng)用程序的進(jìn)一步交互來(lái)更新該位置。
有關(guān)如何在模擬器中與應(yīng)用程序交互的更多信息,請(qǐng)參閱在visionOS模擬器中與應(yīng)用程序交互。