我想在我的 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。
我可以在visionOS模拟器中看到,当用作主屏幕图标时,3D图标资源被正确解释。
我在完全沉浸式空间中测试了
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
}
}