创建自定义导航栏渲染器以在 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 项目中添加自定义后退按钮图标的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xamarin 表单中更改搜索栏取消按钮图像

如何在xamarin表单ios中隐藏标签栏导航标题

如何创建自定义插值器以在 android 中应用翻译动画

连接自定义导航栏插座以在 IB 中查看

从 Xamarin 表单元素共享代码访问自定义渲染器实例

Select2 自定义匹配器以在组标题匹配时保持选项打开