如何留住网站用户,郑州企业网站怎么优化,字体设计艺术字,网站维护与建设pptAR Quick Look 功能强大#xff0c;但在应用中嵌入并使用它实现 AR体验却非常简单#xff0c;如其他所有QuickLook使用一样#xff0c;简单到只需要提供一个文件名就可以达到目标。 AR Quick Look 支持.usdz 和.reality 两种格式文件#xff0c;如果在 Xcode 工程中引入了 … AR Quick Look 功能强大但在应用中嵌入并使用它实现 AR体验却非常简单如其他所有QuickLook使用一样简单到只需要提供一个文件名就可以达到目标。 AR Quick Look 支持.usdz 和.reality 两种格式文件如果在 Xcode 工程中引入了 Reality Composer 工程文件.rcproject在 Xcode 编译时会自动将.reproject 文件转换成. realtiy 格式打包进应用程序包中。 在应用中嵌人并使用 AR Quick Look 时需要遵循 QLPreviewControllerDataSource 协议并实现该协议定的两方法如表1所示。
表1QLPreviewControllerDataSource 协议方法 numberOfPreviewItems (in: QLPreviewController) - Int AR Quick Look 需要知道浏览的模型数目通常返回1 previewController (QLPreviewController, previewItemAt: Int) - QLPreviewItem 提供給 AR Quick Look 具体需要展示的模型 描述 方法名称 在 previewController 方法中我们可以直接返回 QLPreviewltem 类型实例也可以返回ARQuickLookPreviewltem类型实例。ARQuickLookFreviewltem 类继承自 QLPreviewItem类是专为AR 展示定制的类型该类提供了两个 AR 专用属性allowsContentScaling 和 canonical WebPageURL其中 allowsContentScaling 为布尔值用于设置是否允许缩放模型这在一些实物展示类应用场合会比较有用 如家具展示一般没有必要允许使用者缩放模型canonicalWebPageURL用于设置分享的文件 URL如果设置了该值在使用 AR Quick Look 分享时会分享该链接地址而如果没有设置则会直接分享模型文件.usdz或.reality 文件。 下面模拟实际使用场景进行演示为简单起见我们只在主场景中设置一个按钮当用户单击这个按钮时会调用 AR Quick Look展示指定的模型并设置是否允许缩放和分享链接属性。 1 新建一个 SwiftUI View 文件命名为 ARQuickLookView具体代码如下。
import SwiftUI
import QuickLook
import ARKitstruct ARQuickLookViewController: UIViewControllerRepresentable {var fileName: Stringvar allowScaling: Boolfunc makeCoordinator() - ARQuickLookViewController.Coordinator {Coordinator(self)}func makeUIViewController(context: Context) - UIViewController {let controller QLPreviewController()controller.dataSource context.coordinatorreturn controller}func updateUIViewController(_ controller: UIViewController,context: Context) {}class Coordinator: NSObject, QLPreviewControllerDataSource {let parent: ARQuickLookViewControllerprivate lazy var fileURL: URL Bundle.main.url(forResource: parent.fileName,withExtension: usdz)!init(_ parent: ARQuickLookViewController) {self.parent parentsuper.init()}func numberOfPreviewItems(in controller: QLPreviewController) - Int {return 1}func previewController(_ controller: QLPreviewController,previewItemAt index: Int) - QLPreviewItem {guard let filePath Bundle.main.url(forResource: parent.fileName, withExtension: usdz) else {fatalError(无法加载模型)}let item ARQuickLookPreviewItem(fileAt: filePath)item.allowsContentScaling parent.allowScalingitem.canonicalWebPageURL URL(string: https://www.example.com/example.usdz)return item}}
}在上述代码中我们首先定义了 fileName、allowScaling 两个变量用于存储 ARQuickLookPreviewItem属性信息然后遵循了 QLPreviewControllerDataSource 协议并实现了该协议的两个方法。将该类独立出来是为了更好地组织代码、方便使用、简化主代码逻辑。 2在主场景中放置一个按钮并设置当按钮单击时启用 AR Quick Look 并显示实例化的ARQuickLookView 场景。代码如下所示。
struct ARQuickLookView : View {State var showingPreview falsevar body: some View {ARQuickLookViewController(fileName: fender_stratocaster,allowScaling:true).edgesIgnoringSafeArea(.all).navigationTitle(AR Quick Look)}
} 在代码中由于 AR Quick Look 使用代码已封装到 ARQuickLookView 结构体中因此在主代码中直接调用即可效果如图所示。 在iOS 13及以上版本系统中AR Quick Look 还支持多模型展示并支持环境光照明这大大地拓宽了其使用领域可以实现诸如家具布置、模型对比等功能。另外AR Quick Look 与 Reality Composer 的结合对设计人员非常友好可以快速开发出AR 应用原型。