0

我正在为我的 iOS 应用程序寻求帮助,希望有人能让我走上正确的道路!仅供参考:我不是开发人员,我是一名建筑专业的学生,​​正在为博物馆的项目工作。

所以,我有这个视图,其中包含博物馆中不同对象的多张卡片,当我点击它时,我会转到一个新视图,其中包含图像、描述、... + 一个播放按钮(播放按钮是一个矢量三角形有一些覆盖它的框架,背景......)。

我以某种方式对其进行了配置,以便我能够轻松地添加更多对象,并使用字典提供相应的信息。

struct Card: Identifiable {
let id = UUID()
var index: Int
var title: String
var subtitle: String
var description: String
var text: String
var image: String
var background: String
var logo: String }

var cards = [
Card(index: 1, title: "Universale".uppercased(), subtitle: "Joe Colombo".uppercased(), description: "Short description", text: "Long description", image: "Universale", background: "Background 5", logo: "Logo 5"),]

然后我用这段代码在我的主视图中调用这个变量来查看我想要显示的每张卡片。

var featured: some View {
    ScrollView(.horizontal, showsIndicators: false){
        HStack(spacing: 16) {
            ForEach(cards) { cards in
                    CardsItem(cards: cards)
                        
                        .onTapGesture {
                            showCourse = true
                            selectedCourse = cards
                        }
                        .accessibilityElement(children: .combine)
                        .accessibilityAddTraits(.isButton)
                
            }
        }
        .padding(20)
    }
    .tabViewStyle(.page(indexDisplayMode: .never))
    .sheet(isPresented: $showCourse) {
        CardsView(namespace: namespace, cards: $selectedCourse, isAnimated: false)
    }
}

我的完整视图编码如下:

    var content: some View {
    ScrollView {
        scrollDetection
        
        Spacer()
            .padding(.top, 40)
        
        Text("Essayez les objets de la collection chez vous!")
            .font(.body.bold())
            .foregroundColor(.primary)
            .sectionTitleModifier()
          
        Group {
            
        featured
        
        
        Text("Porte-à-faux".uppercased())
            .font(.body.bold())
            .foregroundColor(.secondary)
            .sectionTitleModifier()

        
        featured2

        .padding(.bottom, 60)
        }
    }
    .coordinateSpace(name: "scroll")
    .overlay(NavigationBar(title: "Collection", contentHasScrolled: $contentHasScrolled))        
}

在这一点上,一切都如我所愿。但现在我想为每个对象添加一种访问 usdz 文件的方法,并在我点击播放按钮时在 AR QuickLook 中显示它。我设法让它工作(有点,如果我想稍后返回,我目前需要终止应用程序)在每张卡上启动一个文件,但我找不到为每个对象启动相应 usdz 文件的方法。

我将如何解决这个问题?我希望我足够清楚。提前致谢!

4

1 回答 1

0

这是我用于 AR QuickLook 的代码

class ARQLViewController: UIViewController, QLPreviewControllerDataSource {
let assetName = "Pantone"
let assetType = "usdz"
let allowsContentScaling = false
let canonicalWebPageURL = URL(string: "nil")

override func viewDidAppear(_ animated: Bool) {
    let previewController = QLPreviewController()
    previewController.dataSource = self
    present(previewController, animated: true, completion: nil)
}

func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
    return 1
}

func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
    guard let path = Bundle.main.path(forResource: assetName, ofType: assetType) else {
        fatalError("Couldn't find the supported asset file.")
    }
    let url = URL(fileURLWithPath: path)
    let previewItem = ARQuickLookPreviewItem(fileAt: url)
    previewItem.allowsContentScaling = allowsContentScaling // default = true
    previewItem.canonicalWebPageURL = canonicalWebPageURL   // default = nil
    return previewItem
}}
于 2022-01-21T18:20:43.917 回答