删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用

Posted

技术标签:

【中文标题】删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用【英文标题】:Remove border top, change font family,.... not working in Xamarin iOS latest version 【发布时间】:2021-12-08 05:23:26 【问题描述】:

在我的 Xamarin ios 应用程序中,我试图隐藏顶部边框并更改 TabbedPage 的字体系列。对于 Xamarin 版本 5.0.0.2021,它可以正常工作。但是,当我将 Xamarin 版本更新为 5.0.0.2244 时,它似乎不起作用?这里一定有什么不寻常的地方。这就是我更改字体 Family 和 Border Top TabbedPage 的方式:

MyTabbedPageRenderer

更改图标大小、字体大小、字体系列,... TabbedPage

[assembly: ExportRenderer(typeof(TabbedPage), typeof(MyTabbedPageRenderer))]
....
public class MyTabbedPageRenderer : TabbedRenderer


    protected override void OnElementChanged(VisualElementChangedEventArgs e)
    
        base.OnElementChanged(e);

        TabBar.TintColor = UIColor.Gray;
        TabBar.BarTintColor = UIColor.White;
        TabBar.BackgroundColor = UIColor.White;
    
    public override void ViewWillAppear(bool animated)
    
        base.ViewWillAppear(animated);

        if (TabBar?.Items == null)
            return;

        foreach (var item in TabBar.Items)
        
            item.Image = ScalingImageToSize(item.Image, new CGSize(30, 30)); // set the size here as you want 
        

        var tabs = Element as TabbedPage;
        if (tabs != null)
        
            for (int i = 0; i < TabBar.Items.Length; i++)
            
                UpdateTabBarItem(TabBar.Items[i]);
            
        
    
    private void UpdateTabBarItem(UITabBarItem item)
    
        if (item == null)
            return;

        // Set the font for the title.
        item.SetTitleTextAttributes(new UITextAttributes()  Font = UIFont.FromName("Quicksand Regular", 12), TextColor = Color.FromHex("#808080").ToUIColor() , UIControlState.Normal);
        item.SetTitleTextAttributes(new UITextAttributes()  Font = UIFont.FromName("Quicksand Regular", 13), TextColor = Color.FromHex("#00AA13").ToUIColor() , UIControlState.Selected);

    
    ...


移除顶部 TabbedPage 的边框

AppDelegate

public override bool FinishedLaunching(UIApplication app, NSDictionary options)


    UITabBar.Appearance.BackgroundImage = new UIImage();
    UITabBar.Appearance.ShadowImage = new UIImage();
    UITabBar.Appearance.SelectedImageTintColor = UIColor.FromRGB(0, 170, 19);

    LoadApplication(new App());

我尝试重建项目,重新启动所有内容,但它似乎不适用于 Xamarin 版本 5.0.0.2244。请求帮忙。谢谢。

【问题讨论】:

【参考方案1】:

iOS 15 有一些 api 变化,所以我们需要改变方式。

移除顶部边框

TabBar.ClipsToBounds = true;

更改项目的字体和文本颜色

private void UpdateTabBarItem(UITabBarItem item)

  if (item == null) return;

  if(UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
  
      UITabBarAppearance app = new UITabBarAppearance();
      app.ConfigureWithOpaqueBackground();
      app.BackgroundColor = UIColor.Clear;

      app.StackedLayoutAppearance.Normal.TitleTextAttributes = new UIStringAttributes()  Font = UIFont.FromName("GillSans-UltraBold", 12), ForegroundColor = Color.FromHex("#00FF00").ToUIColor() ;
      app.StackedLayoutAppearance.Selected.TitleTextAttributes = new UIStringAttributes()  Font = UIFont.FromName("GillSans-UltraBold", 20), ForegroundColor = Color.FromHex("#FF0000").ToUIColor() ;
      item.StandardAppearance = app;

      if (UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
      
           item.ScrollEdgeAppearance = item.StandardAppearance;
      
   

在我这边测试过,效果很好。

参考

https://***.com/a/69361301/8187800.

【讨论】:

以上是关于删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

移除 UISearchBar 的上下边框和阴影?

我怎样才能确定我的所有用户都有这个字体系列?

如何使用背景图像删除 > iOS 10 和 Swift 4 中的 Tab Bar 顶部边框(阴影)?

html 更改外部顶部标签的字体粗细

背景颜色和边框[暂停]

如何向 Xamarin Forms App Shell Tabbar 添加顶部边框