You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms iOS端ToolbarItem的IconImageSource显示白色图片如何修复

Xamarin Forms IconImageSource iOS端Toolbar图标显示为白色解决方案

问题根因

该问题是iOS系统的默认行为导致的:iOS默认会将UIToolbar、UINavigationBar上的图标自动按模板模式渲染,仅保留图片的透明度通道,颜色统一使用导航栏的TintColor属性值,如果你的导航栏TintColor设为白色,就会出现图标全白的情况,安卓没有这个默认机制所以显示正常。

解决方案

  • 方案1:直接指定图片的渲染模式为原始渲染(推荐,适配所有场景,包括多色彩图标)
    先引用对应的平台配置命名空间,修改代码如下:
    using Xamarin.Forms.PlatformConfiguration;
    using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
    
    // 原有逻辑修改为
    var searchIcon = ImageSource.FromFile("searchIcon.png");
    // 仅针对iOS平台修改渲染模式,不影响安卓
    searchIcon.On<iOS>().SetRenderingMode(UIKit.UIImageRenderingMode.AlwaysOriginal);
    ToolbarItem toolbarItemSearch = new ToolbarItem { IconImageSource = searchIcon };
    ToolbarItems.Add(toolbarItemSearch);
    
  • 方案2:调整导航栏TintColor(仅适用于单色调图标场景)
    如果你的图标本身就是单色设计,不需要保留原有色彩,可以直接将导航栏的TintColor设置为你期望的图标颜色,比如设为黑色:
    // 在iOS项目的AppDelegate或者Xamarin.Forms的导航页配置中添加
    NavigationPage.SetTintColor(this, Color.Black);
    
  • 方案3:验证图片资源配置
    如果上述方案无效,先排查资源配置是否正确:
    1. 确认iOS项目Resources目录下存在对应倍率的图片:searchIcon.png、searchIcon@2x.png、searchIcon@3x.png
    2. 所有图片的生成操作都设置为BundleResource,复制到输出目录属性设为「如果较新则复制」

内容的提问来源于stack exchange,提问作者Twan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:39:00