为啥我的 iOS8 应用程序操作扩展应用程序图标不显示?

Posted

技术标签:

【中文标题】为啥我的 iOS8 应用程序操作扩展应用程序图标不显示?【英文标题】:Why isn't my iOS8 Application Action Extension App Icon showing up?为什么我的 iOS8 应用程序操作扩展应用程序图标不显示? 【发布时间】:2014-06-07 13:12:44 【问题描述】:

即使我在 Targets App Icons 和 Launch Images 中指定了图标资产目录,我的应用图标也只是一个灰色的超级椭圆。

【问题讨论】:

您可以在右侧边栏中的文件检查器中将images.xcassets 文件添加到Target Membership 下的扩展目标中。 您采取了哪些步骤让图标出现?我尝试在我的操作扩展目标的新资产目录中设置 AppIcon,但没有显示任何内容。 图片资源是否在您的扩展目录中?确保图像将使用扩展名进行编译以显示。 将相同的 xcassets 文件引用添加到您的扩展项目可以解决该问题。您可能会收到有关应用程序图标的一些编译错误,但如果您在此之后更改扩展程序的项目设置中的图标,应该没问题。 【参考方案1】:

以下内容对我创建共享扩展有用,但我相信操作扩展也会这样做。请注意,对于 Action 扩展,您需要一个单色版本。

如果您将资产目录用于主应用程序图标,您应该能够让扩展程序利用相同的资产目录。对我来说,关键是:

    选择我的扩展并告诉它使用资产目录。选择您的主图标正在使用的同一目录。默认应该是 AppIcon

    在 XCode Project Navigator 中选择 image.xcassets 文件

    检查我的扩展,使其包含在 Target Membership 中

【讨论】:

这会导致资产在每个目标中重复。 这很好用,但请记住:Action Extensions 将仅使用图标的 Alpha 通道。因此,您很可能无法对主应用和操作扩展使用相同的图标。【参考方案2】:

您的主应用程序中的资产目录无法从您的应用程序扩展中访问,因为它们是两个单独的应用程序包,只能共享框架。

您需要在您的操作扩展文件夹中创建一个单独的资产目录,并在您的目标中引用该目录。

【讨论】:

我有点好奇这是不是真的,因为我在Apple's documentation 中阅读了本节:例如,您可能希望设置数据共享以允许包含应用程序及其扩展访问大量数据,例如预渲染资产。 好奇我是否遗漏了什么。 数据共享与本文讨论的资产共享完全不同的概念。您需要考虑数据共享,以便在运行时在应用程序及其扩展程序之间共享数据。这里没有使用的是为什么以及如何在构建它们时包含两个项目共有的文件。例如,本例中的应用程序图标。 对我来说,它适用于模拟器,但不适用于设备。这可能与操作系统访问资产的不同权限有关... 我创建了一个新的资产目录并确保它的成员资格符合扩展的目标。我还修改了设置以引用我创建的新应用程序图标图像集。编译时出现此错误...`没有一个输入目录包含匹配的贴纸图标集或名为“AppIconExt”的应用程序图标集。`【参考方案3】:

编辑:这对我来说适用于 iphone,但不适用于 ipad 模拟器。只用黑白制作新图像(60x60 和 76x76)解决了这个问题。

将 image.xcassets 添加到扩展目标

【讨论】:

我可以确认这是为自己解决的。请注意,您仍然必须在 Targets > General > App Icons 和 Launch Images > App Icons Source 中指定资产目录。它“自动”像在苹果文档中一样工作——对我来说也不是这样。

以上是关于为啥我的 iOS8 应用程序操作扩展应用程序图标不显示?的主要内容,如果未能解决你的问题,请参考以下文章

用于应用扩展的 IB 故事板:iPad 图标不存在、尺寸不变、方向不工作

它只是不可能添加一个动作扩展图标

iOS 8 推荐应用图标锁屏

应用程序的图标不显示了,为啥?

为啥我的更新后的应用程序在仅适用于 IOS8 的启动时崩溃?

iOS 操作扩展图标位置