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:验证图片资源配置
如果上述方案无效,先排查资源配置是否正确:- 确认iOS项目Resources目录下存在对应倍率的图片:
searchIcon.png、searchIcon@2x.png、searchIcon@3x.png - 所有图片的生成操作都设置为
BundleResource,复制到输出目录属性设为「如果较新则复制」
- 确认iOS项目Resources目录下存在对应倍率的图片:
内容的提问来源于stack exchange,提问作者Twan
相关产品推荐
相关产品推荐

