为什么我的iOS8应用程序操作扩展应用图标没有显示出来?

13

尽管我已经在我的目标应用程序图标和启动图像中指定了图标资产目录,但我的应用程序图标只是一个灰色的超椭圆形。


4
你可以在右侧边栏的文件检查器中,在“目标成员资格”下将images.xcassets文件添加到你的扩展目标中。记得不要改变原意,使内容更通俗易懂。 - Andrew
你采取了哪些步骤才能让图标出现?我尝试在我的操作扩展目标中的新资产目录中设置AppIcon,但没有任何显示。 - Chris Wagner
您的扩展目录中是否有图像资源?请确保这些图像将与扩展一起编译以显示出来。 - Paito
将相同的xcassets文件引用添加到您的扩展项目中即可解决该问题。您可能会收到一些有关应用程序图标的编译错误,但如果在此之后更改扩展名的项目设置中的图标,则应该没有问题。 - Deepak G M
3个回答

27

以下是我在创建分享扩展时使用的方法,但我相信动作扩展也可以做到。请注意,在操作扩展的情况下,您需要一种单色版本。

如果您在应用主图标中使用资源目录,您应该能够让扩展程序利用同一个资源目录。对我来说关键是:

  1. 选择我的扩展并告诉它使用资源目录。选择与主图标使用的相同目录。默认应该是 AppIcon。 输入图像说明

  2. 在 XCode 项目导航器中选择 image.xcassets 文件

  3. 检查我的扩展程序以确保它包含在目标成员身份中

输入图像说明


这会导致每个目标中都有重复的资产。 - Andrew Theis
5
这个很好用,但记住:操作扩展只会使用图标的Alpha通道。因此,您很可能不能在主应用程序和操作扩展中使用相同的图标。 - Pascal

13

你主应用程序中的资源目录不能从应用程序扩展访问,因为它们是两个不同的应用程序包,只能共享框架。

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


我有点好奇这是否真的是正确的,因为我在苹果文档中读到了这一部分:例如,您可能希望设置数据共享,以允许包含应用程序及其扩展访问大量数据,如预渲染资产。 我想知道是否有什么我没有注意到的东西。 - Lukas Spieß
1
数据共享是一种完全不同于在该上下文中讨论的资产共享的概念。您需要考虑数据共享以在运行时在应用程序和其扩展之间共享数据。在这里讨论的是在构建这些项目时如何包含两个项目共有的文件,例如此案例中的应用程序图标,以及为什么要这样做。 - Deepak G M
对我来说,在模拟器上可以运行,但在设备上不行。这可能与操作系统访问资源的不同权限有关... - powtac
我创建了一个新的资源目录,并确保它是扩展目标的成员。我还修改了设置,以引用我创建的新应用程序图标图像集。当我编译时,出现以下错误... “没有任何输入目录包含名为“AppIconExt”的匹配贴纸图标集或应用程序图标集。” - RPM

6

编辑:这对我的 iPhone 有效,但对 iPad 模拟器无效。只使用黑白两色制作新的图像(60x60 和 76x76)可以解决问题。

将 image.xcassets 添加到扩展目标中。

添加到目标


1
我可以确认这对我来说解决了问题。请注意,在“Targets > General > App Icons and Launch Images > App Icons Source”中仍然需要指定资源目录。它会像苹果文档中所描述的那样“自动”工作 - 对我来说也不是这样的情况。 - JVillella

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接