【发布时间】:2014-11-02 05:51:01
【问题描述】:
编辑2:
我已将问题提炼为最简单的项目。这是设置。
我创建了一个新的单视图应用程序并立即添加了一个新的操作扩展目标。我在 .xcassets 文件中创建了一个新的图标集,并添加了一个 iPad 视网膜大小的图标(我尝试填充所有图标,结果都是一样的)。
我确保将 Images.xcassets 包含在 Copy Bundle Resources 构建阶段:
然后在模拟器中运行应用程序时一切正常!
编译到设备但是会导致空白图标:
我认为这可能意味着我正在使用的 PNG 文件有问题,但这里的一切看起来也正常:
有人遇到过类似的吗?
我已经访问过诸如 this 之类的问题以寻找答案,我认为我做的一切都是正确的,但我仍然没有在操作表中看到图标。
这是我所做的:
创建了一个工作容器应用程序,该应用程序的工作应用程序图标存储在 Images.xcassets 中。然后我创建了一个动作扩展目标作为同一个项目的成员。
将 Images.xcassets 从我的包含应用程序添加到我的扩展程序的“复制捆绑资源”构建阶段。我知道这很有效,因为我可以在扩展程序中使用
UIImage.imageNamed(...)从 .xcassets 文件中加载图像。在我的扩展程序设置的常规选项卡中,我将“应用程序图标和启动图像”下的“应用程序图标源”指向 Images.xcassets 的名为“AppIcon”的资源,同样用于我的包含应用程序。
当这不起作用时,我做了一些进一步的阅读,发现动作扩展需要“alpha 蒙版”样式的图像。我在我的 .xcassets 文件中创建了另一个名为“AppIcon-2”的项目,并用所有大小的应用程序图标填充它,除了 1 色 + 透明度 PNG。我将我的扩展程序的“应用程序图标和启动图像”指向了这个新的“AppIcon-2”
我的操作扩展程序的图标仍然是一个空白的白色方块。有没有我遗漏的步骤? alpha 掩码必须采用一些非常特定的格式吗? (我只是在 Photoshop 中保存为 .png)。资源必须在 .xcassets 中有一些非常具体的名称吗?
我也对一些答案(如上面链接的答案)感到困惑,这似乎暗示问题已通过将 .xcassets 添加到构建阶段来解决。大多数应用程序图标不是完全不透明的吗? iOS 如何从完全不透明的应用图标生成 alpha 蒙版?
编辑:我不完全确定是什么改变造成了不同(我会尝试推断它并更新这篇文章,如果我弄明白了)但我现在看到一个基于“的 alpha 掩码的工作图标” AppIcon-2" 在模拟器上。我什至没有想过要检查模拟器,但它确实证明图标是从正确的位置拉出来的。设备对图像的处理方式有所不同。
【问题讨论】:
-
我发现的另一件事是:在使用
iPad Retina (8.0)的模拟器上,该图标没有出现,但在其他模拟器上却出现了!这感觉就像 XCode 上的一个错误...... -
确保在每次测试后执行 XCode: Project > Clean 和 iOS Simulator: Reset Content and Settings...。有时似乎图标更改被缓存...
-
我想出了一些办法:在全局日志控制台中(iPhone 通过 USB 连接),这在启动操作扩展时显示:
Sep 25 16:22:14 ASDF-iPhone MobileSlideShow[2643] <Warning>: Cannot access extension bundle. Sep 25 16:22:14 ASDF-iPhone kernel[0] <Notice>: Sandbox: MobileSlideShow(2643) deny file-read-data /private/var/mobile/Containers/Bundle/Application/ASDFF5A9-4BCD-4B60-B82B-8DC3CC98184A/Test Icon.app/PlugIns/ex.appex“测试图标”是我的主要应用程序和“前" 我的扩展应用程序。 -
不错的发现。仍然不确定如何解决它。
-
这不是问题的直接答案,而是关于“iOS 8 共享扩展问题的集合,以及雷达链接、示例项目和解决方法”主题的非常有用的解决方法列表" github.com/tumblr/ios-extension-issues
标签: ios iphone ios8 ios-app-extension