如何覆盖 iOS 的 Xamarin Forms TabbedPage 项目字体?

2023-12-30

想要为我的 Xamarin Forms 应用程序实现一致的外观,我需要知道如何更改选项卡式页面选项卡栏图标的字体。使用UITabBarItem.Appearance正如 iOS API 所建议的那样,似乎没有任何效果。这样做需要什么?


您需要编写一个像这样的自定义渲染器,请从下面的代码中获取线索!它有你想要的东西

 [assembly: ExportRenderer(typeof(ExtendedTabbedPage), typeof(TabbedPageCustom))]
    namespace App.iOS
    {
        public class TabbedPageCustom : TabbedRenderer
        {
            public TabbedPageCustom ()
        {
            TabBar.TintColor = UIKit.UIColor.White;
            TabBar.BarTintColor = UIKit.UIColor.White;
            TabBar.BackgroundColor = UIKit.UIColor.Red;
        }
        protected override void OnElementChanged (VisualElementChangedEventArgs e)
        {
            base.OnElementChanged (e);

            // Set Text Font for unselected tab states
            UITextAttributes normalTextAttributes = new UITextAttributes();
            normalTextAttributes.Font = UIFont.FromName("ChalkboardSE-Light", 20.0F); // unselected
            normalTextAttributes.TextColor = UIKit.UIColor.Blue;

            UITabBarItem.Appearance.SetTitleTextAttributes(normalTextAttributes, UIControlState.Normal);
        }
        public override UIViewController SelectedViewController {
            get {
                UITextAttributes selectedTextAttributes = new UITextAttributes();
                selectedTextAttributes.Font = UIFont.FromName("ChalkboardSE-Bold", 20.0F); // SELECTED
                if (base.SelectedViewController != null)
                {
                    base.SelectedViewController.TabBarItem.SetTitleTextAttributes(selectedTextAttributes, UIControlState.Normal);
                }
                return base.SelectedViewController;
            }
            set {
                base.SelectedViewController = value;

                foreach (UIViewController viewController in base.ViewControllers)
                {
                    UITextAttributes normalTextAttributes = new UITextAttributes();
                    normalTextAttributes.Font = UIFont.FromName("ChalkboardSE-Light", 20.0F); // unselected
                    normalTextAttributes.TextColor = UIKit.UIColor.Blue;
                    viewController.TabBarItem.SetTitleTextAttributes(normalTextAttributes, UIControlState.Normal);
                }
            }
        }

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖 iOS 的 Xamarin Forms TabbedPage 项目字体? 的相关文章

随机推荐