Xcode 11 PDF图像资源“;“保存矢量数据”;不在SwiftUI工作?

Xcode 11 PDF图像资源“;“保存矢量数据”;不在SwiftUI工作?,pdf,swiftui,vector-graphics,xcode11,Pdf,Swiftui,Vector Graphics,Xcode11,我正在使用Xcode 11中的SwiftUI开发一个应用程序,试图使用基于矢量的PDF图像,使用“单比例”,但当我放大图像时,图像总是显得模糊 在Xcode 11的UIKit中,我没有遇到任何问题。我创建了一个包含两个场景的虚拟应用程序,两个场景都显示相同的矢量图像。我在故事板中创建了第一个场景,然后使用HostingViewController嵌入在SwiftUI中制作的相同场景。当我运行应用程序时,第一个场景(UIKit)显示了一个清晰、不模糊的图像。然而,第二个场景(SwiftUI)模糊,

我正在使用Xcode 11中的SwiftUI开发一个应用程序,试图使用基于矢量的PDF图像,使用“单比例”,但当我放大图像时,图像总是显得模糊

在Xcode 11的UIKit中,我没有遇到任何问题。我创建了一个包含两个场景的虚拟应用程序,两个场景都显示相同的矢量图像。我在故事板中创建了第一个场景,然后使用HostingViewController嵌入在SwiftUI中制作的相同场景。当我运行应用程序时,第一个场景(UIKit)显示了一个清晰、不模糊的图像。然而,第二个场景(SwiftUI)模糊,似乎没有使用矢量数据,尽管使用了相同的源图像资源

我可以通过使用矢量图像创建UIImage来“解决”这一问题,然后使用此UIImage扩展来调整UIImage的大小,然后再将其传递到
image
。但是,我在
resized(to:)
方法中输入的大小在运行时没有差别,因此我还必须在“var body”中向
图像添加
.frame(w:,h:)
,使其显示正确的大小

let uiImage = UIImage(named: "Logo-vector")!
var image: Image {
        Image(uiImage: uiImage.resized(to: CGSize(width: 500, height: 500)))
            .resizable()
}

var body: some View {
        NavigationView {
            VStack(alignment: .center, spacing: 8) {
                Spacer()
                Text("Logo vector SwiftUI")
                image
                    .frame(width: 240, height: 216)
                ...
                }
                ...
            }
        }
}

extension UIImage {
    func resized(to size: CGSize) -> UIImage {
        return UIGraphicsImageRenderer(size: size).image { _ in
            draw(in: CGRect(origin: .zero, size: size))
        }
    }
}
使用此解决方案,图像在运行时清晰且大小适当,但感觉有点像黑客

我在网上到处寻找不同的解决方案,或者专门针对SwiftUI的任何其他人都有这个问题,但根本没有找到任何东西

是否有其他人有此问题或有更好的解决方案?

尝试在每个pdf图像资产上启用“IPreserve Vector Data”
(在“Assets.xcsets”文件夹中选择图像,然后在“Attributes inspector>图像集>调整大小”中选择图像)

这对我很有用。不需要在开始时声明image变量

NavigationView {
      VStack(alignment: .center, spacing: 8) {
      Spacer()
      Text("Logo vector SwiftUI")

      Image(systemName: "text.bubble") // or Image("ImageName") for local assets
          .resizable().aspectRatio(contentMode: .fit)
          .frame(width:100, height:100)


            }
            ...
        }


是的,你的技术对我有用。但我不明白为什么我在Assets.xcasstets中使用了这个stop-to-work,它总是PDF+“保留向量图形”+“单比例”,而且它是有效的。在Xcode 11.3.1、iOS 13.x中,它似乎无法正常工作。也许这与SwiftUI中的视图刷新有关,因为刷新有很多问题handling@MichałZiobro我不使用SwiftUI,而且它也坏了。你知道这一点吗?在小部件中使用图像时,在Xcode 12 beta 1中看到相同的行为。这是否回答了您的问题?将图像添加到Assets.xcsets文件夹。确保Assets.xcsets中的图像名称匹配。例如,如果您有一个名为hello_world.png的图像,在您的SwiftUI代码中,它应该是图像(“hello_world”)