EDIT2:
我把这个问题简化为最简单的项目.这是设置.
我创建了一个新的单一视图应用程序并立即添加了一个新的Action扩展目标.我在.xcassets文件中创建了一个新的图标集,并添加了一个iPad视网膜大小的图标(我已尝试填写所有图标,结果相同).
我确保在Copy Bundle Resources构建阶段包含Images.xcassets:
然后在模拟器中运行应用程序时一切正常!
然而,编译到设备会产生一个空白图标:
我想也许这意味着我正在使用的PNG文件有问题,但是这里的一切看起来还不错:
有没有人遇到类似的?
我已经访问过这样的问题该找一个答案,我认为我做的一切权利,但我仍然没有看到在动作片上的图标.
这就是我所做的:
创建了一个工作容器应用程序,其中包含存储在Images.xcassets中的工作应用程序图标.然后我创建了一个Action Extension Target作为同一个项目的成员.
将包含应用程序的Images.xcassets添加到我的扩展程序的"Copy Bundle Resources"构建阶段.我知道这很有效,因为我可以UIImage.imageNamed(...)
在我的扩展程序中使用.xcassets文件加载图像.
在我的扩展设置的常规选项卡中,我指出"应用程序图标和启动图像"下的"应用程序图标源"指向Images.xcassets的名为"AppIcon"的资源,与我的包含应用程序使用的资源相同.
当这不起作用时,我做了一些进一步的阅读,发现Action Extensions需要一个"alpha mask"风格的图像.我在.xcassets文件中创建了另一个名为"AppIcon-2"的项目,并使用所有尺寸的应用程序图标填充它,除了作为单色+透明度PNG.我将我的扩展的"App Icons和Launch Images"指向这个新的"AppIcon-2"
我的动作扩展的图标仍然是一个空白的白色方块.有没有我缺少的步骤?alpha掩码必须有一些非常具体的格式吗?(我只是在photoshop中保存为.png).资源在.xcassets中是否有一些非常具体的名称?
我也对一些答案(如上面链接的答案)感到困惑,这些答案似乎意味着通过在构建阶段添加.xcassets来解决问题.大多数app图标都不完全不透明吗?iOS如何从完全不透明的应用程序图标生成alpha蒙版?
编辑:我不完全确定是什么改变产生了差异(如果我搞清楚的话,我会尝试推断它并更新这篇文章)但我现在看到一个基于"AppIcon-2"alpha掩码的工作图标"在模拟器上.我甚至没想过要检查模拟器,但确实证明图标是从正确的位置拉出来的.关于设备的一些事情是以不同的方式处理图像.