如何为操作扩展提供图标?

How do you provide an icon for an action extension?

所有扩展类型都使用包含应用程序的图标,动作扩展除外。苹果文档是这样说的:

In iOS, a custom Action extension uses a template image version of its containing app’s icon, which you must provide.

但是它没有说明您必须如何提供图标。它说:

For information on how to add an icon to your app extension, see Creating an Asset Catalog and Adding an App Icon Set or Launch Image Set.

但“创建资产目录”和“添加应用程序图标”文档的链接是关于如何为 应用程序 添加图标的链接,它们不包含关于如何专门为操作扩展添加图标的部分。

扩展目标在 XCode 常规设置中不包含应用程序图标部分(与应用程序不同),因此它的图标可能必须通过资产目录添加。但是,即使我将应用程序图标图像集添加到我的扩展程序的资产目录中,该扩展程序的图标仍然没有出现。

我应该如何为操作扩展添加图标?如果它是通过它的资产目录,那么为什么当我将图标图像集添加到资产目录时它不起作用?

操作扩展图标的文档不是特别有用——尝试 this answer, which provides a worked example, or this answer 加上聊天中继续的讨论。

对于图标本身,current guidance如下:

Use a template image for an action extension icon. A template image uses a mask to create an icon. Use black and white with appropriate transparency and antialiasing, and don’t include a drop shadow. Template images should be centered in an area measuring about 70px by 70px.

在尝试解决该问题时遇到了很多麻烦,但我最终找到了解决方法(我不喜欢它,但它有效):

我最终安装了 Xcode 7 的最新版本。 我用 Xcode 7 打开我的项目,然后按照此答案中提供的步骤操作:.

然后我 运行 我的项目来自 Xcode 8,它非常有效。

首先,您需要有一个资产目录。你可能已经有了这个,但如果你没有,这很容易创建。

  1. 单击包含扩展文件的组。

  2. 文件 菜单,select 新建 > 文件....

  3. 在 iOS 部分中,单击 Asset Catalog,然后单击 Next


其次,我们需要将应用程序图标添加到我们的项目中。请注意,图标 必须具有透明背景 。如果您尝试使用纯色背景的图标,iOS 将不会显示图标。

  1. 单击 + 按钮并选择 应用程序图标和启动图像 > 新建 iOS 应用程序图标 .

  2. 默认情况下,Xcode 将调用图标 AppIcon,但它也会警告您此名称正在使用中。要删除此警告,请选择不同的名称(例如 AppIconExtension-iOS)。

  3. 将您的图标拖到 60px 占位符中。您还需要 120x120(又名@2x)和 180x180px(又名@3x)图标。如果需要,您可以创建其他图标,但这不是必需的。


第三,你需要告诉Xcode在构建扩展时使用图标。

  1. 在项目导航器中,select 您的项目位于树的顶部。

  2. Select 您的扩展作为目标和 select 构建设置.

  3. 搜索 Asset Catalog App 图标集名称 并输入您的图标名称。

  4. 构建并 运行 扩展。

为了使其正常工作,仅将资产添加到资产目录是不够的 - 它还需要设置扩展的构建设置部分的资产目录编译器选项以指定应用程序图标集的名称在资产目录中:

我们需要一个用于扩展应用程序的单色图标,其尺寸和类型与我们在 Appicon 上设置的完全相同(只有名称和图标类型不同)。 首先我们需要将资产包含到扩展目标

Step 1:- For adding assets click on extension scheme->Build phases ->Copy Bundle Resources ->Click + -> Add assets OR Just add by click on assets in your extension target membership.

参考下面的截图

Step 2:- Now for setting up extension App icon click on Extension application from targets area, Go to build settings ->Search Assets catalog compiler option ->Enter your App icon name

参考下面的截图

对于 Xcode 15,扩展的构建设置部分中的密钥已更改为“Primary App Icon Set Name