如何更改辅助工具栏的背景颜色 - xamarin ios

时间:2017-09-26 04:07:44

标签: xamarin xamarin.ios xamarin.forms toolbar navigationbar

enter image description here使用Navigation渲染器我尝试通过设置以下内容来更改工具栏的背景颜色。

this.Toolbar.BackgroundColor = Color.Yellow;

但是我的辅助工具栏颜色没有改变。

有谁能让我知道如何更改xamarin iOS中辅助工具栏的背景颜色?

1 个答案:

答案 0 :(得分:0)

我是按照以下方式做到的:

[assembly: ExportRenderer(typeof(NavigationPage), typeof(ExtendedNavigationRenderer))]
namespace Sample.iOS
{
    public class ExtendedNavigationRenderer : NavigationRenderer
    {
        UIToolbar _secondaryToolbar;

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            //_secondaryToolbar = View.Subviews.OfType<UIToolbar>().FirstOrDefault(v => v.GetType() != typeof(UIToolbar));
            _secondaryToolbar = View.Subviews.OfType<UIToolbar>().FirstOrDefault();
            if (_secondaryToolbar != null)
                _secondaryToolbar.BarTintColor = this.NavigationBar.BarTintColor;
        }

        public override void ViewDidLayoutSubviews()
        {
            base.ViewDidLayoutSubviews();

            if (_secondaryToolbar != null && _secondaryToolbar.Items != null)
            {
                foreach (UIBarButtonItem item in _secondaryToolbar.Items)
                {
                    var label = item.CustomView.Subviews.OfType<UILabel>().FirstOrDefault();
                    if (label != null)
                    {
                        label.TextColor = UINavigationBar.Appearance.TitleTextAttributes.ForegroundColor;
                        //label.Font = label.Font.WithSize(12f);
                    }
                }
            }
        }

(TintColor方法带来的颜色与主要NavigationBar略有不同,但NavigationBar.BackgroundColor为空)