白色背景的应用程序图标仅在 iOS 上显示为黑色

Posted

技术标签:

【中文标题】白色背景的应用程序图标仅在 iOS 上显示为黑色【英文标题】:App icon with white background appears black on iOS only 【发布时间】:2018-12-18 06:16:47 【问题描述】:

我正在使用 React Native 构建,但我不确定这是 RN 问题。

仅在 ios 上出现了令人费解的异常情况。我的应用图标具有 白色 背景,不透明,显示为黑色,但仅在 iOS 上。 android 按预期工作。我试过从 Xcode 中删除图标,

删除ios/build 文件夹,清除我的缓存,重新链接,关闭模拟器和地铁,然后重新启动。没有。还是黑色的。我不知道这里发生了什么。它让我发疯。 而且,我不知道它为什么会出现,因为我从 ios 中删除了它,这显然意味着它仍然缓存在某个地方。有一点,各种像素密度的图标仍然存在。难道是因为没有1024pt 图标,Xcode 从其他尺寸“借用”了一个?但是,它不会解释黑色背景,因为所有图标都是白色的(由图标的创建者确认)。

【问题讨论】:

【参考方案1】:

我在我的原生 iOS 应用程序中遇到了类似的问题,其中一组白色背景的图标显示为黑色。就我而言,问题的原因是图标被设置为在代码 (UIImageRenderingModeAlwaysTemplate) 中呈现为“模板图像”。修复是将其渲染为“原始图像”(UIImageRenderingModeAlwaysOriginal)。

在您的情况下,您可以在 2 个地方进行检查:

    在“资产目录”部分中,对于有问题的图标,检查“渲染为”字段的值是否设置为“原始图像”而不是“模板图像”。

    在您的目标 C/Swift 代码中,检查您是如何使用此图标的。确保从上面的图标创建 UIImage 时,使用 UIImageRenderingModeAlwaysOriginal 模式渲染它。

    NSString* str = [NSString stringWithUTF8String:resourceName.c_str()]; return [[UIImage imageNamed:str] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

【讨论】:

感谢您的回复。我是 javascript 开发人员,所以我只在不可避免的情况下使用 Xcode。所以,我不明白你的步骤。对于 #1,我不知道在哪里可以找到该部分,对于 #2,我对 obj-c 或 swift 没有任何想法。我所有的源代码都是 javascript,而 Xcode 只是一个编译器层。如果有 React Native 经验的人可以提供帮助,我将不胜感激。 在 Asset Catalog 上参考 Apple 文档:developer.apple.com/library/archive/documentation/Xcode/… 我重建了整个图标集。那成功了。不确定是什么问题。 @MikeS。 “重建整个图标集”是什么意思?您是否再次生成了所有图像尺寸? 我是在 18 个月前发布的。我想我的意思是使用我当时使用的任何图标生成器。抱歉,我不能更具体。

以上是关于白色背景的应用程序图标仅在 iOS 上显示为黑色的主要内容,如果未能解决你的问题,请参考以下文章

具有透明背景的 iOS 应用程序图标在设备上显示黑色背景

Bootstrap成功图标在白色而不是绿色上显示白色?

iOS 模拟器使用模板渲染模式在透明图像上显示白色背景

当背景颜色为白色时,Android 通知图标颜色不会更改

带有黑色背景的 alpha 图像绘制其他白色...?

少数 iOS 设备上的状态栏显示为白色