【问题标题】:UITabBarController BarTintColor not working in iOS15UITabBarController BarTintColor 在 iOS15 中不起作用
【发布时间】:2021-11-17 10:39:11
【问题描述】:

在iOS15中,我遇到了一个问题,底部栏的颜色没有显示正确的颜色,它变成了透明/白色。相同的代码在 iOS14 和 iOS13 中运行良好。

我有一个适用于 iOS 的标签栏渲染器类,在 ViewWillAppear() 中,我使用代码 TabBar.BarTintColor = UIColor.Blue 更改标签栏颜色,它仅适用于低于 iOS15 的 iOS,但不适用于 iOS15。

基于此issue,我假设我需要将代码从 UINavigationBar 转换为 UITabBar。但是,我在 UITabBar 类中没有看到对“scrollEdgeAppearance”的任何引用。我相信这对于解决问题很重要。如果有人能给我一些建议,我将不胜感激。非常感谢。

更改适用于 iOS14 和 iOS13 的标签栏颜色的代码

TabBar.BarTintColor = UIColor.Blue;

UINavigationBar

    let appearance = UINavigationBarAppearance()
    appearance.configureWithOpaqueBackground()
    appearance.backgroundColor = <your tint color>
    navigationBar.standardAppearance = appearance;
    navigationBar.scrollEdgeAppearance = navigationBar.standardAppearance

我自己的 UITabBar 代码

     var appearance = new UITabBarAppearance();
     appearance.ConfigureWithOpaqueBackground();
     appearance.BackgroundColor = UIColor.Blue;
     this.TabBarController.TabBar.StandardAppearance = appearance;

【问题讨论】:

    标签: xamarin.ios ios15 bartintcolor


    【解决方案1】:

    你有没有检查过这个链接:https://github.com/xamarin/xamarin-macios/issues/12778

    由于目前 Visual Studio 中没有针对 iOS 15 的更新,因此我们需要下载 pkg 文件并手动安装 Xamarin.iOS 以测试 iOS 15。

    我下载并安装它,使用以下代码,一切正常。

    if(UIDevice.CurrentDevice.CheckSystemVersion(15,0))
    {
    
       var appearance = new UITabBarAppearance();
       appearance.ConfigureWithOpaqueBackground();
       appearance.BackgroundColor = UIColor.Blue;
    
       tab.TabBar.StandardAppearance = appearance;
       tab.TabBar.ScrollEdgeAppearance = tab.TabBar.StandardAppearance;
    }
    

    参考

    https://stackoverflow.com/a/68749895/8187800.

    【讨论】:

    • 我可以知道您下载的 pkg 文件是哪个版本的吗?你介意分享你当前版本的 Xamarin.IOS 吗?
    • Xamarin.iOS 15.0.0.6 ,只需下载链接中的 pkg 文件,然后点击安装到您的 mac。
    【解决方案2】:

    刚刚修复了这个问题,但在 Xamarin.Forms 中:标签栏在 iOS 15 中具有白色/透明颜色。

    1. 更新 VS for Mac(8.10.10 build 8)。
    2. 安装最新的 Xamarin.iOS (15.0.0.6)。
    3. 使用 UITabBar:在 App_Delegate.cs 的 FinishedLaunching 中某处添加以下代码:
    UITabBar.Appearance.BackgroundColor = Color.FromHex("333333").ToUIColor();
    

    【讨论】:

      【解决方案3】:

      嗯,我想你正在寻找当前 ViewController 的导航项:

      试试类似的东西

              var appearance = new UINavigationBarAppearance();
              appearance.ConfigureWithOpaqueBackground();
              appearance.BackgroundColor = *Your color*;
              tabBar.NavigationItem.StandardAppearance = appearance;
              tabBar.NavigationItem.ScrollEdgeAppearance = tabBar.NavigationItem.StandardAppearance;
      

      其中 tabBar 是 UITabBarController 对象

      祝你好运

      【讨论】:

      • 不走运。对于 iOS15,标签栏仍然显示透明/白色
      • 您能否添加一张图片,说明您要更改 UI 的哪一部分?
      • 你也可以试试上面的@WeiLoonWong
      • 我们通过实现 TabBar.BarTintColor = UIColor.Blue; 来改变 Tab Bar 颜色TabBar 来自 UITabBarController。我尝试了上面的代码,但它仍然显示透明/白色。
      【解决方案4】:

      你需要使用继承自 UIBarAppearance 的类。

      我写了一篇文章谈论 iOS 15 上的 UINavigationBar,但我也谈论了其他组件,如 UITabBar。你可以在这里查看:https://medium.com/@eduardosanti/uinavigationbar-is-black-on-ios-15-44e7852ea6f7

      【讨论】:

      • 我为 UITabBar 尝试了相同的外观设置,但是,在 UITabBar 类中没有引用“scrollEdgeAppearance”。我认为“scrollEdgeAppearance”是解决问题所必需的。我不知道如何在没有'scrollEdgeAppearance'的情况下为 UITabBar 解决同样的问题:(
      • Apple 在 iOS 15 中也为 TabBar 引入了 scrollEdgeAppearance。类似 UITabBar().scrollEdgeAppearance
      【解决方案5】:

      Visual Studio for Mac 现在包括 Xamarin.iOS 15.0.0.6 更新。

      我将 Visual Studio for Mac 更新到版本 8.10.9(内部版本 3)和 Xamarin.iOS 到 15.0.0.6

      我用以下代码解决了 UITabBar 栏颜色:

      var appearance = new UITabBarAppearance();
      appearance.ConfigureWithOpaqueBackground();
      appearance.BackgroundColor = UIColor.Blue; // color you want
      
      TabBar.StandardAppearance   = appearance;
      TabBar.ScrollEdgeAppearance = TabBar.StandardAppearance;
      

      *** 截至 9 月 30 日,如果您使用的是 Windows 版 Visual Studio,您可能仍然看不到 UITabBar 类中对“scrollEdgeAppearance”的引用。您可以忽略它,因为您仍然可以无错误地构建项目。

      【讨论】:

      • 您是否管理过明暗主题(我的意思是动态)?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 2021-12-15
      • 2021-09-04
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 2010-11-25
      相关资源
      最近更新 更多