日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

如何使用 SwiftUI 構建 visionOS 應用

來源: 責編: 時間:2024-05-17 17:49:06 279觀看
導讀前言Apple Vision Pro 即將推出,現在是看看 SwiftUI API 的完美時機,這使我們能夠將我們的應用程序適應 visionOS 提供的沉浸式世界。蘋果表示,構建應用程序的最佳方式是使用 Swift 和 SwiftUI。下面,我們將學習如何使用

xoS28資訊網——每日最新資訊28at.com

前言

Apple Vision Pro 即將推出,現在是看看 SwiftUI API 的完美時機,這使我們能夠將我們的應用程序適應 visionOS 提供的沉浸式世界。蘋果表示,構建應用程序的最佳方式是使用 Swift 和 SwiftUI。下面,我們將學習如何使用 SwiftUI 構建 visionOS 應用程序。xoS28資訊網——每日最新資訊28at.com

Windows

我喜歡 SwiftUI 的一點是它如何自動適應平臺。你無需執行任何操作即可在 visionOS 上運行使用 SwiftUI 編寫的應用程序。它可以即插即用。但是,你始終可以通過向前移動并適應平臺功能來改進用戶體驗。xoS28資訊網——每日最新資訊28at.com

struct ContentView: View {    var body: some View {        NavigationSplitView {            List {            // 列表內容            }            .navigationTitle("Models")            .toolbar {                ToolbarItem(placement: .bottomOrnament) {                    Button("open", systemImage: "doc.badge.plus") {                                            }                }                                ToolbarItem(placement: .bottomOrnament) {                    Button("open", systemImage: "link.badge.plus") {                                            }                }            }        } detail: {            Text("Choose something from the sidebar")        }    }}

在上面的示例中,我們使用了稱為 bottomOrnament 的新工具欄放置。visionOS 中的裝飾是位于窗口外部的位置,用于呈現與窗口連接的控件。你還可以通過使用新的 ornament 視圖修改器手動創建它們。xoS28資訊網——每日最新資訊28at.com

struct ContentView: View {    var body: some View {        NavigationSplitView {            List {            // 列表內容            }            .navigationTitle("Models")            .ornament(attachmentAnchor: .scene(.leading)) {                // 在此處放置你的視圖            }        } detail: {            Text("Choose something from the sidebar")        }    }}

新的 ornament 視圖修改器允許我們為其連接的窗口創建一個具有特定錨點的裝飾。將你的應用內容適應 visionOS 提供的沉浸式體驗的另一種方法是使用 transform3DEffect 和 rotation3DEffect 視圖修改器來加入深度效果。如下圖:xoS28資訊網——每日最新資訊28at.com

xoS28資訊網——每日最新資訊28at.com

Volumes

你的應用程序可以在 visionOS 上的同一場景中并排顯示 2D 和 3D 內容。在這種情況下,我們可以使用 RealityKit 框架來呈現 3D 內容。例如,RealityKit 為我們提供了 Model3D SwiftUI 視圖,允許我們從 USDZ 或實際文件中顯示 3D 模型。xoS28資訊網——每日最新資訊28at.com

struct ContentView: View {    var body: some View {        NavigationSplitView {            List(Model.all) { model in                NavigationLink {                    Model3D(named: model.name)                } label: {                    Text(verbatim: model.name)                }            }            .navigationTitle("Models")        } detail: {            Model3D(named: "robot")        }    }}

Model3D 視圖的工作方式類似于 AsyncImage 視圖,并異步加載模型。你還可以使用 Model3D 初始化器的另一種變體,它允許你自定義模型配置并添加占位視圖。xoS28資訊網——每日最新資訊28at.com

struct ContentView: View {    var body: some View {        NavigationSplitView {            List(Model.all) { model in                NavigationLink {                    Model3D(                        url: Bundle.main.url(                            forResource: model.name,                            withExtension: "usdz"                        )!                    ) { resolved in                        resolved                            .resizable()                            .aspectRatio(contentMode: .fit)                    } placeholder: {                        ProgressView()                    }                } label: {                    Text(verbatim: model.name)                }            }            .navigationTitle("Models")        } detail: {            Model3D(named: "robot")        }    }}

在你的應用程序中呈現 3D 內容時,你可以使用 windowStyle 修飾符來啟用內容的體積顯示。體積樣式允許你的內容在第三維中增長,以匹配模型的大小。xoS28資訊網——每日最新資訊28at.com

對于更復雜的 3D 場景,我們可以使用 RealityView 并填充它以 3D 內容。xoS28資訊網——每日最新資訊28at.com

struct ContentView: View {    var body: some View {        NavigationSplitView {            List(Model.all) { model in                NavigationLink {                    RealityView { content in                        // load the content and add to the scene                    }                } label: {                    Text(verbatim: model.name)                }            }            .navigationTitle("Models")        } detail: {            Text("Choose something from the sidebar")        }    }}

沉浸式空間

visionOS 的第三個選項是完全沉浸式體驗,允許我們通過隱藏周圍的所有內容來專注于你的場景。xoS28資訊網——每日最新資訊28at.com

@mainstruct MyApp: App {    var body: some Scene {        WindowGroup {            ContentView()        }                ImmersiveSpace(id: "solar-system") {            SolarSystemView()        }    }}

正如你在上面的示例中所看到的,我們通過使用 ImmersiveSpace 類型來定義場景。它允許我們通過使用 openImmersiveSpace 環境值來啟用它。xoS28資訊網——每日最新資訊28at.com

struct MyMenuView: View {    @Environment(/.openImmersiveSpace) private var openImmersiveSpace        var body: some View {        Button("Enjoy immersive space") {            Task {                await openImmersiveSpace(id: "solar-system")            }        }    }}

我們還可以使用 dismissImmersiveSpace 環境值來關閉沉浸式空間。請記住,你一次只能顯示一個沉浸式空間。xoS28資訊網——每日最新資訊28at.com

struct SolarSystemView: View {    @Environment(/.dismissImmersiveSpace) private var dismiss        var body: some View {        // Immersive experience                Button("Dismiss") {            Task {                await dismiss()            }        }    }}

結論

在介紹了 SwiftUI 在 visionOS 上的應用之后,我們了解到 SwiftUI 可以幫助我們輕松構建適應 visionOS 的應用程序。不僅如此,SwiftUI 還提供了許多方便的工具和修飾符,例如 windowStyle 修飾符,可用于在應用程序中呈現 3D 內容,并使內容根據模型的大小自動適應。通過引入沉浸式空間,我們可以將用戶帶入全新的體驗,讓他們沉浸在應用程序的世界中??偟膩碚f,SwiftUI 為構建 visionOS 應用程序提供了強大而靈活的工具,我們可以期待在這個全新的平臺上開發出令人驚嘆的應用體驗。xoS28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-88936-0.html如何使用 SwiftUI 構建 visionOS 應用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Swift 定制 Core Data 遷移

下一篇: ASP.NET Core Web中使用AutoMapper進行對象映射

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美中文字幕视频| 国产亚洲观看| 在线播放日韩专区| 一区二区在线视频| 亚洲精品国产日韩| 亚洲自拍都市欧美小说| 久久精品成人一区二区三区| 久久影院午夜片一区| 欧美日韩www| 国产日韩亚洲欧美| 最近中文字幕日韩精品 | 久久成人一区| 欧美电影电视剧在线观看| 欧美日韩一区二区三区四区在线观看| 欧美日韩精品一本二本三本| 国产手机视频精品| 亚洲国产欧美在线| 午夜精品国产| 久久亚洲一区二区| 欧美视频官网| 伊人成人在线视频| 亚洲一区二区三区在线观看视频| 久久精品99国产精品| 欧美男人的天堂| 国产一区av在线| 99在线精品观看| 久久精品卡一| 欧美亚韩一区| 亚洲国产cao| 午夜国产精品影院在线观看| 欧美高清你懂得| 国产日产精品一区二区三区四区的观看方式 | 久久免费视频网| 国产精品国产一区二区| 亚洲国产成人av在线| 亚洲女人天堂av| 欧美激情综合亚洲一二区| 国产在线日韩| 亚洲在线1234| 欧美日韩精品中文字幕| 欲色影视综合吧| 欧美亚洲专区| 欧美少妇一区| 亚洲精品一区中文| 老司机成人在线视频| 国产手机视频一区二区| 亚洲一区二区三区高清不卡| 欧美韩国日本一区| 影音先锋中文字幕一区| 午夜日韩电影| 国产精品激情| 一本色道久久88综合日韩精品| 美日韩精品视频免费看| 国模大胆一区二区三区| 午夜视频在线观看一区二区三区| 欧美深夜福利| 亚洲每日在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产曰批免费观看久久久| 午夜一区在线| 国产精品入口尤物| 亚洲一区免费视频| 欧美日韩精品一区二区天天拍小说| 亚洲高清在线| 另类国产ts人妖高潮视频| 狠狠色2019综合网| 久久se精品一区二区| 国产欧美日韩亚洲一区二区三区| 亚洲午夜影视影院在线观看| 欧美日韩国产页| 亚洲久久一区二区| 欧美激情网站在线观看| 亚洲欧洲一区二区天堂久久 | 欧美日韩一区不卡| 一本大道久久精品懂色aⅴ| 欧美第十八页| 亚洲日韩欧美视频一区| 欧美高清在线观看| 亚洲毛片视频| 欧美图区在线视频| 亚洲欧美国产va在线影院| 国产精品入口日韩视频大尺度| 亚洲欧美一区二区原创| 国产欧美日韩中文字幕在线| 欧美一区影院| 狠狠色综合一区二区| 久久这里只精品最新地址| 亚洲国产乱码最新视频 | 国产午夜精品久久久| 久久精品99无色码中文字幕| 国产一区二区三区在线观看网站 | 原创国产精品91| 美女视频黄 久久| 在线观看一区欧美| 欧美成人激情视频| 99精品久久久| 国产精品久久久久久久电影| 欧美专区在线观看一区| 国产乱人伦精品一区二区 | 狠狠噜噜久久| 欧美大胆人体视频| 一区二区电影免费在线观看| 国产精品毛片a∨一区二区三区| 午夜在线精品偷拍| 国内精品久久久久伊人av| 免费成人高清在线视频| 99精品视频一区| 国产精品日韩在线| 久久蜜桃香蕉精品一区二区三区| 91久久精品国产91性色| 欧美三级在线播放| 性久久久久久| 在线观看的日韩av| 欧美日韩一区在线播放| 性色av香蕉一区二区| 亚洲成色777777女色窝| 欧美少妇一区二区| 久久国产欧美日韩精品| 最新国产拍偷乱拍精品| 国产精品久久久久久久久久免费 | 亚洲免费av电影| 国产精品一区久久久久| 老司机一区二区三区| 一区二区三区www| 国产中文一区| 欧美全黄视频| 久久av资源网站| 亚洲理论在线| 国产婷婷色一区二区三区| 欧美激情黄色片| 欧美在线观看www| 亚洲精品一区二区三区在线观看 | 欧美日韩精品免费观看视一区二区| 香蕉亚洲视频| 亚洲日产国产精品| 国产欧美日韩综合一区在线观看 | 欧美日韩国产精品一卡| 久久精品亚洲国产奇米99| 亚洲毛片在线| 韩国v欧美v日本v亚洲v| 欧美日韩一区二区视频在线观看| 久久精品盗摄| 亚洲社区在线观看| 亚洲电影在线免费观看| 国产精品视频在线观看| 欧美电影打屁股sp| 欧美中文字幕| 亚洲一区二区三区四区中文| 亚洲国产精品一区二区第四页av| 国产精品久久网站| 欧美好吊妞视频| 久久精品欧美| 亚洲综合大片69999| 亚洲精品美女久久7777777| 国产主播在线一区| 国产精品久久久久久久久久久久久 | 国产老肥熟一区二区三区| 欧美国产亚洲视频| 久久精品一区二区三区不卡牛牛| 中国女人久久久| 亚洲人成小说网站色在线 | 亚洲无限av看| 亚洲精品123区| 今天的高清视频免费播放成人 | aaa亚洲精品一二三区| 在线国产精品一区| 国产日韩精品入口| 国产精品av一区二区| 欧美激情第8页| 老司机精品导航| 久久国产日韩欧美| 亚洲免费在线视频| 一本色道久久88综合亚洲精品ⅰ | 国产精品久久久久影院色老大| 欧美精品色综合| 男人的天堂亚洲在线| 久久久www成人免费毛片麻豆| 亚洲欧美视频一区| 亚洲已满18点击进入久久| 夜夜嗨av一区二区三区网站四季av | 国产亚洲美州欧州综合国| 国产精品久久综合| 欧美视频免费| 欧美日韩国产999| 欧美精品免费在线| 欧美国产日韩精品| 欧美成人亚洲成人| 免费成人黄色av| 久热国产精品视频| 久久―日本道色综合久久| 久久久精品日韩欧美| 久久国产精品99国产精| 欧美制服丝袜| 久久国产欧美精品| 久久国产日韩欧美| 久久久久国产精品一区| 久久精品国产一区二区三| 久久er99精品| 久久成人国产| 久久久久九九九| 久久综合伊人77777| 噜噜噜91成人网| 欧美va亚洲va日韩∨a综合色| 蜜桃av综合|