创建自定义导航栏渲染器以在 xamarin 表单 IOS 项目中添加自定义后退按钮图标
Posted
技术标签:
【中文标题】创建自定义导航栏渲染器以在 xamarin 表单 IOS 项目中添加自定义后退按钮图标【英文标题】:Create a custom navigationbar renderer to add a custom back button icon in xamarin forms IOS project 【发布时间】:2021-08-25 15:24:20 【问题描述】:我成功地在我的 Xamarin.Forms android 项目中创建了一个自定义渲染器,以添加一个自定义后退按钮图标而不是本机后退按钮。我使用的渲染器如下:
public class MyNavigationPageRenderer: Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer
Context _context;
AndroidX.AppCompat.Widget.Toolbar _toolbar;
public MyNavigationPageRenderer(Context context) : base(context)
_context = context;
public override void OnViewAdded(Android.Views.View child)
base.OnViewAdded(child);
if (child.GetType() == typeof(AndroidX.AppCompat.Widget.Toolbar))
_toolbar = (AndroidX.AppCompat.Widget.Toolbar)child;
_toolbar.SetNavigationIcon(Resource.Drawable.Navigation_backbutton);
protected override void OnLayout(bool changed, int l, int t, int r, int b)
base.OnLayout(changed, l, t, r, b);
if (_toolbar != null)
if (_toolbar.NavigationIcon != null)
_toolbar.NavigationIcon = AndroidX.Core.Content.ContextCompat.GetDrawable(_context, Resource.Drawable.Navigation_backbutton);
在 Xamarin 中,因为我们需要为 Xamarin.ios 项目提供单独的渲染器,所以我也需要在那里具有相同的逻辑。但由于使用的库和类不同,我不确定如何进行。任何有关如何进行相同操作的帮助表示赞赏。
【问题讨论】:
参考:liudeyun.net/xamarin-custom-navbar-icon-text github.com/hachi1030-Allen/XamarinCustomNavBar 【参考方案1】:你可以试试下面的方法:
[assembly: ExportRenderer(typeof(NavigationPage), typeof(MyRenderer))]
namespace FormsApp.iOS
class MyRenderer : NavigationRenderer
public override void ViewDidLayoutSubviews()
base.ViewDidLayoutSubviews();
if (this.NavigationBar.TopItem.BackBarButtonItem == null)
this.NavigationBar.BackIndicatorImage = UIImage.FromFile("xx.png");
this.NavigationBar.BackIndicatorTransitionMaskImage = UIImage.FromFile("xx.png");
this.NavigationBar.TopItem.BackBarButtonItem = new UIBarButtonItem("", UIBarButtonItemStyle.Plain, null);
而here是Xamarin.iOS中自定义UINavigationBar的官方示例,可以参考。
【讨论】:
以上是关于创建自定义导航栏渲染器以在 xamarin 表单 IOS 项目中添加自定义后退按钮图标的主要内容,如果未能解决你的问题,请参考以下文章