如何在视图中渲染visionOS图标?

问题描述 投票:0回答:1

我想在我的 VisionOS 应用程序中包含一个 about 页面,这应该包含应用程序图标。但是,图标的图像不会呈现。

我已经尝试使用此SO答案以及这个优秀的博客中建议的图像声明,但图标没有出现。

示例代码:

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")
            if let imageiOS = UIImage(named: "AppIcon") {
                Label(
                    title: { Text("Works") },
                    icon: { Image(systemName: "sun.max.fill")}
                )
                Image(uiImage: imageiOS)
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .clipShape(RoundedRectangle(cornerRadius: 8))
                    .frame(width: 100, height: 100)
            }
         
        }
        .padding()
    }
}

这适用于 iOS,但不适用于 VisionOS。

iOS simulation - icon rendered

visionOS simulation - no icon rendered

我可以在visionOS模拟器中看到,当用作主屏幕图标时,3D图标资源被正确解释。

icon rendered correctly in visionOS homescreen

visionOS icon in Xcode

swiftui icons visionos
1个回答
0
投票

我在完全沉浸式空间中测试了

PNG
图标的渲染。如您所见,一切正常。在您的情况下,如果您使用体积窗口,则可能会出现问题,因为图标可能位于体积之外。

import SwiftUI

@main struct YourApp : App {
    var body: some Scene {
        ImmersiveSpace() {
            ContentView()
        }
        .immersionStyle(selection: .constant(.full), in: .full)
    }
}

struct ContentView : View {
    var body: some View {
        VStack {
            Image(systemName: "camera.circle.fill")
                .imageScale(.large)
            
            Label(title: { Text("It really works") },
                   icon: { Image(systemName: "lightbulb.max.fill") })
            
            Image("AppIcon")
                .resizable()
                .frame(width: 150, height: 150)
            
            Text("visionOS icon")
        }
        .offset(z: -2000)              // move along the -Z axis
        .padding(.bottom, 2500)        // move along the +Y axis
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.