UITabBarController BarTintColor 在 iOS15 中不工作

UITabBarController BarTintColor not working in iOS15

在iOS15中,我遇到了一个问题,底栏的颜色显示不正确,变成了transparent/white。相同的代码在 iOS14 & iOS13.

中运行良好

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

基于此 issue,我假设我需要将代码从 UINavigationBar 转换为 UITabBar。但是,我在 UITabBar class 中没有看到任何对“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;

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

试试

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

其中 tabBar 是 UITabBarController 对象

祝你好运

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

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

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

由于目前 iOS 15 在 visual studio 中没有更新,因此我们需要下载 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;
}

参考

.

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

我将 Mac 的 Visual Studio 更新为版本 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 日,如果您将 Visual Studio 用于 Windows,您可能仍未在 UITabBar class 中看到对“scrollEdgeAppearance”的引用。您可以忽略它,因为您仍然可以无错误地构建项目。

刚刚解决了这个问题,但在 Xamarin.Forms 中:标签栏在 iOS 15 中有 white/transparent 颜色。

  1. 更新 VS 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();