【问题标题】:Create a custom navigationbar renderer to add a custom back button icon in xamarin forms IOS project创建自定义导航栏渲染器以在 xamarin 表单 IOS 项目中添加自定义后退按钮图标
【发布时间】: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 项目提供单独的渲染器,所以我也需要在那里具有相同的逻辑。但由于使用的库和类不同,我不确定如何进行。任何有关如何进行相同操作的帮助表示赞赏。

【问题讨论】:

标签: xamarin xamarin.forms xamarin.ios custom-renderer


【解决方案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的官方示例,可以参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    相关资源
    最近更新 更多