1

问题描述

在我的应用程序中,我有一个导航栏搜索按钮设置如下:

static navigatorButtons = {
    leftButtons: [
        {
            id: 'back-nav-button',
            icon: require('../assets/images/icons/arrow-left.png')
        }
   ]
};

该按钮在 iOS 和 Android 上均按预期工作,但在 iOS 上该按钮为蓝色。我知道这是所需的行为,并且可以通过设置覆盖颜色navBarButtonColor,但问题是它是一个多色按钮 - 这意味着我希望按钮仅包含 PNG 图像的颜色,而不是navBarButtonColor.

我尝试设置navBarButtonColornull, transparent,但似乎没有任何效果。

所以我的问题是,有没有办法让导航栏图标呈现所提供的 PNG 的颜色,就像在 Android 上一样?

重现步骤/代码片段/屏幕截图

只需static navigatorButtons = ...使用本地多色 PNG 在 iOS 上运行任何 RNN 应用程序,您就会看到图标的颜色被覆盖。


环境

  • React Native Navigation 版本:1.1.473
  • React Native 版本:0.55.3
  • 平台(iOS、Android 或两者?):iOS
  • 设备信息(模拟器/设备?操作系统版本?调试/发布?):Android Emulator on Debug
4

2 回答 2

2

在 iOS 上,UIBarButtonItem使用使用源图像的 Alpha 通道创建的图像。要显示实际图像(不是它的 Alpha 通道蒙版),您需要将图像的渲染模式更改为alwaysOriginal

虽然,查看React Native Image 类文档我看不到renderingMode属性

于 2018-06-27T13:10:01.367 回答
0

我们已经设法找到了解决方法。通过将disableIconTint按钮属性设置为true,它会禁用图标颜色覆盖。请参见以下示例:

static navigatorButtons = {
    leftButtons: [
        {
            id: 'back-nav-button',
            icon: require('../assets/images/icons/arrow-left.png'),
            disableIconTint: true // Add this line to use the PNG's color
        }
   ]
};
于 2018-06-28T12:04:53.100 回答