我们正在努力优化应用程序的大小,但有些事情我们无法弄清楚。看起来 Xcode 包含了 SVG 图像的光栅化版本,显着增加了我们应用程序的大小。
鉴于以下步骤:
.xcassets
中添加一个带有“Single Scale”和“Preserve Vector data”的SVG(就像这个,注意它是9KB)
Assets.car
大小,超过100KB
xcrun --sdk iphoneos assetutil --info Assets.car
并检查json,注意有一个矢量图像,还有图像@1x和@3x,加起来超过90KB(因为这些不是矢量)
.car
部分添加光栅化图像?这会增加我们的应用程序大小一些 MB(我们有很多 SVG),我认为这是不必要的,并且违背了我认为使用矢量的想法。有人知道为什么会发生这种情况吗?谢谢!
Xcode 12 中提供的功能是将 SVG 添加到资产目录,并在构建时创建相关的光栅图像变体。
2020 年发布的 iOS 13(以及 macOS、tvOS 的相关版本)能够在引用 SVG 时识别正确的光栅图像。这就是为什么在使用 SVG 时要求至少以 iOS 13 为目标,而不是因为对 SVG 的任何本机支持。
与将 PDF 添加到资产目录一样,添加 SVG 主要是一种简化工作流程并消除添加错误分辨率作为变体的可能性的方法。
有具有不同级别的 SVG 支持的第三方框架可以满足您的需求,或者您可以返回手动光栅化图像并直接添加变体,这将使您能够更好地控制图像属性。
根据您的目标最低 iOS 级别和(因此最旧的设备),您可能不需要图像的所有变体。