使用 Xcode 10 构建时 iOS10 上的像素化​​图像

Posted

技术标签:

【中文标题】使用 Xcode 10 构建时 iOS10 上的像素化​​图像【英文标题】:Pixelated images on iOS10 when building with Xcode 10 【发布时间】:2018-11-22 09:29:21 【问题描述】:

根据我的测试,我只在制作存档并将其上传到 Fabric 或 iTunesConnect 时遇到此问题。在模拟器和真实设备上调试都可以。我尝试了pdf和png。我尝试更改资产目录中的压缩类型。

左边是存档,右边是调试

【问题讨论】:

【参考方案1】:

ButtonBarItem 图片制作说明

创建尺寸为 22 x 22 的 PDF 文件 使用矢量工具绘制内容(不要在 PDF 中嵌入图像) 使用 1pt 或 1.5pt 的笔画宽度 将 PDF 拖放到 Assets.xcassets 有三种不同比例的槽,用1x选择左边 否则不要更改默认设置

在构建时,XCode 会以 1x、2x 和 3x 比例创建正确的图像。

如果这没有产生预期的结果,您将在此处找到有关如何进一步挖掘的一些提示。

调试版和最终发布版有什么区别

当您向应用商店提交时,会启动一个名为 App Thinning 的流程,该流程会为不同的实际设备创建变体。然后还会发生图像压缩之类的事情。

等待 App Store 版本的 build 不方便,但您也可以在本地执行 App Thinning 并分析确切创建的映像版本。但其中涉及一些手动步骤。

我们正在寻找的是由箭头 PDF 文件创建的 .png 文件。由于多个图像被压缩并组合成一个 .car 文件,我们还需要一个工具来从该文件中提取图像。可以使用 GitHub 上提供的名为“Asset Catalog Tinkerer”的应用程序 - 但它也可以使用包管理器 Homebrew 安装,请参阅 https://brew.sh。更多详情如下。

如何在本地做 App Thining

在 Xcode 中选择 打开 为创建的存档选择右侧的“分发应用程序” 从工作表中选择“Ad Hoc” 从 App Thinning 组合中选择您的型号或“所有兼容的设备变体” 在下一个对话框中选择“自动管理签名” 那么需要一些时间 然后选择“导出”并保存

提取 Asset.car

在输出文件夹中现在有一个文件“App Thinning Size Report.txt”在文本编辑器中打开它 列出了针对不同设备生成的所有变体 例如如果您有 ios 10 的 5s,它将列为 [device: iPhone6,2, os-version: 10] 对应的.ipa文件只是一个zip文件,从命令行解压('unzip xxx.ipa') 在提取的“Payload”文件夹中有应用,在 Finder 中右键单击它并选择“显示包内容” 有一个名为“Asset.car”的文件,其中包含以最终格式创建的图像

从 Asset.car 中提取图像

在命令行上使用自制软件安装Asset Catalog Tinkererbrew cask install asset-catalog-tinkerer 从正常的应用程序目录启动Asset Catalog Tinkerer 使用 打开“Asset.car” 选择“导出所有图像...” 然后您可以在图像编辑器中查看最终图像

它的名称应类似于“XXX-ABC-ZZZ-Normal@2x.png”,并且分辨率应为 44x44,因为它具有 2x 比例。

更多信息:

观看 WWDC 2018 视频:第 227 场会议,优化应用资产,https://developer.apple.com/videos/play/wwdc2018/227/

【讨论】:

以上是关于使用 Xcode 10 构建时 iOS10 上的像素化​​图像的主要内容,如果未能解决你的问题,请参考以下文章

xcode 使用 iOS 10 设备构建项目,但启动时崩溃:来自调试器的消息:因内存问题而终止

在 Xcode 8 beta 中为 iOS 10 贴纸包构建时出现问题

构建在 iTunes 中不可见与 xcode 8.2 ios 10 连接

未在 iOS 10 上为基于 XCode 7.3 构建的应用程序生成设备令牌

Apple 会拒绝使用 Xcode 5 构建的应用程序吗? (13.10.2014)

[使用XCode 11.3.1启动iOS 10时iOS应用程序崩溃