EDIT2:
我已将问题提炼到最简单的项目中。这是设置。
我创建了一个新的单一视图应用,并立即添加了一个新的Action扩展目标。我在.xcassets文件中创建了一个新的图标集,并添加了一个iPad视网膜大小的图标(我已尝试填写所有图标,结果相同)。
我确保在Copy Bundle Resources构建阶段包含Images.xcassets:
然后在模拟器中运行应用程序时一切正常!
编译到设备会产生一个空白图标:
我想也许这意味着我正在使用的PNG文件出了问题,但是这里的一切看起来还不错:
有没有遇到类似的人?
我已经访问过像this这样的问题寻找答案,我认为我做的一切正常,但我仍然没有在行动单中看到一个图标。
这就是我所做的:
创建了一个工作容器应用程序,其中包含存储在Images.xcassets中的工作应用程序图标。然后我创建了一个Action Extension Target作为同一个项目的成员。
将包含应用的Images.xcassets添加到我的扩展程序"复制捆绑资源"建设阶段。我知道这很有效,因为我可以在我的扩展程序中使用UIImage.imageNamed(...)
从.xcassets文件加载图片。
在我的扩展程序设置的常规标签中,我指出了"应用程序图标来源"在"应用程序图标和启动图像"指向Images.xcassets的资源名为" AppIcon",用于我的包含应用程序。
当我没有工作时,我做了一些进一步的阅读,发现Action Extensions需要一个" alpha掩码"风格的形象。我在我的.xcassets文件中创建了另一个名为" AppIcon-2"并使用所有尺寸的应用程序图标填充它,除了作为单色+透明度PNG。我指出了#34;应用程序图标和启动图像"我对这个新的" AppIcon-2"
我的动作分机图标仍为空白方块。我有什么步骤可以丢失吗? alpha掩码必须有一些非常具体的格式吗? (我只是在photoshop中保存为.png)。资源在.xcassets中是否有一些非常具体的名称?
我也对一些答案感到困惑(如上面链接的那些答案)似乎暗示通过在构建阶段添加.xcassets来解决问题。 Aren的大多数app图标完全不透明? iOS如何从完全不透明的应用程序图标生成alpha蒙版?
编辑:我不完全确定哪些更改有所不同(如果我弄清楚的话,我会尝试推断它并更新此帖子)但我现在看到一个基于工作的图标在" AppIcon-2"的alpha面具上在模拟器上。我甚至没想过要检查模拟器,但确实证明图标是从正确的位置拉出来的。关于设备的一些事情是以不同的方式处理图像。
答案 0 :(得分:4)
编辑:Apple修复了iOS8.1中的这个问题!
------------ OLD ----------------------
我认为在这一点上,答案是向Apple提交错误报告
如果您可以提交您的准系统示例项目,那将有助于我们的事业!
这是我提交的那个:
摘要:动作扩展图标可以很好地显示来自消息,以及 UIActivityViewController,但是当它从照片应用程序中出现时, 图标是空白的。
我认为这是Apple Photos App的错误
重现步骤:请按照照片说明中的说明进行操作
http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/
预期结果:预计将显示元数据扩展程序图标 正确的如 http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/
实际结果:图标为纯白色
版本:iOS 8.0.2,iOS 8.0.0
注意: iOS 8 action extension icon is blank on device (works in simulator)
以下是使用我的扩展程序来自Messages App的示例 图标显示正确: http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/ 但是从Apple的照片应用程序执行这些步骤会导致图标没有 正确显示。
配置:运行iOS8的任何iOS设备。 iPad 3rd Gen,iPhone 5, iPhone 5c,iPhone 6 Plus
附件:
编辑: 他们将其作为ID的副本关闭:票证ID:17208813 进步!
答案 1 :(得分:2)
我遇到了同样的问题。对我有用的是跟随汤姆哈灵顿的回答,但同时也确保了目标会员资格#39; (扩展图标的右侧窗格)包括扩展目标和应用目标。 (在Build Phases下,它也应列在两个目标的Copy Bundle Resources下。)
另请注意,您的扩展程序图标必须具有完全透明的背景,而不是纯白色。任何白色或透明以外的任何颜色都将呈现为深灰色。
希望这会有所帮助。对不起,我想将此添加为对汤姆答案的评论,但由于我的声誉,Stack Overflow不会让我这么做。
答案 2 :(得分:2)
答案 3 :(得分:1)
您没有提及扩展程序的Info.plist
设置,因此我假设您没有包含图标文件的条目。您需要在NSExtensionServiceToolbarIconFile
字典中添加名为NSExtensionAttributes
的密钥。该值是图标文件的名称。
至少那是它应该如何工作的。在实践中,您似乎需要一个带有图标名称的顶级CFBundleIconFile
键。据说只有在NSExtensionServiceToolbarIconFile
不存在的情况下才会使用,但至少现在是必要的。我有两个,这可能没有必要,但我更愿意保留记录为正确的密钥,以防它在某个时刻开始工作。
答案 4 :(得分:1)
要使用现有的资产目录,我必须将以下内容添加到扩展程序的构建设置中:
我的资产目录中的集合名称是" ExtIcon"。我曾尝试在info.plist中为扩展设置CFBundleIcon和NSExtensionServiceToolbarIconFile键,但没有运气。这实际上似乎有意义,因为它与图标集链接到容器应用程序的方式相同,而不是通过info.plist,而是通过构建设置。
答案 5 :(得分:1)
问题似乎得到解决on iOS 8.1。