升级到 XCode 13(和 iOS 15)后选项卡和导航栏发生变化

ten*_*dai 22 xcode uikit ios swift xcode13

我有一个 iOS 应用程序,自从升级到 Xcode 13 以来,我注意到选项卡导航栏有一些特殊的变化。在 Xcode 13 中,选项卡和导航栏上现在有这个黑色区域,并且在启动应用程序时,选项卡栏和导航栏现在都是黑色的。奇怪的是,如果视图有滚动或表格视图,如果我向上滚动,底部选项卡栏将恢复其白色,如果我向下滚动,导航栏将恢复其白色。

N:B:我已经从 iOS 13 及更高版本强制使用浅色主题:

 if #available(iOS 13.0, *) {
     window!.overrideUserInterfaceStyle = .light
 }
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我或指出正确的方向来处理这种特殊性吗?

是否有一个简单的修复方法可以让 Storyboard 重新调整,或者在这种情况下我必须手动更改每个视图?

升级前的情节提要示例:

在此输入图像描述

之后:

在此输入图像描述

升级前后(分别)的模拟器屏幕:

在此输入图像描述

小智 27

关于导航栏黑了,尝试一下:

let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .red
appearance.titleTextAttributes = [.font: 
UIFont.boldSystemFont(ofSize: 20.0),
                              .foregroundColor: UIColor.white]

// Customizing our navigation bar
navigationController?.navigationBar.tintColor = .white
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
Run Code Online (Sandbox Code Playgroud)

我写了一篇新文章来讨论它。

https://medium.com/@eduardosanti/uinavigationbar-is-black-on-ios-15-44e7852ea6f7

  • 感谢@Eduardo Santi,上面的解决方案有效,就我而言,将 isTranslucent 设置为 true 也有效,至于选项卡栏,我指定了背景颜色 (3认同)

Dmy*_*nko 16

更新到 XCode 13 和 iOS 15 后,我还遇到了一些选项卡栏问题,其中包含不同状态的栏背景颜色和项目文本颜色。我修复它的方法:

if #available(iOS 15, *) {
   let tabBarAppearance = UITabBarAppearance()
   tabBarAppearance.backgroundColor = backgroundColor
   tabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes = [.foregroundColor: selectedItemTextColor]
   tabBarAppearance.stackedLayoutAppearance.normal.titleTextAttributes = [.foregroundColor: unselectedItemTextColor]
   tabBar.standardAppearance = tabBarAppearance
   tabBar.scrollEdgeAppearance = tabBarAppearance
} else {
   UITabBarItem.appearance().setTitleTextAttributes([.foregroundColor: selectedItemTextColor], for: .selected)
   UITabBarItem.appearance().setTitleTextAttributes([.foregroundColor: unselectedItemTextColor], for: .normal)
   tabBar.barTintColor = backgroundColor
 }
Run Code Online (Sandbox Code Playgroud)


ano*_*eal 12

对我来说,我对导航栏和选项卡栏都有问题,所以我在全局应用了样式AppDelegate

func configureNavigationBarAppearance() {
    let appearance = UINavigationBarAppearance()
    appearance.configureWithOpaqueBackground()
    appearance.backgroundColor = .white
    UINavigationBar.appearance().standardAppearance = appearance
    UINavigationBar.appearance().scrollEdgeAppearance = appearance
}

func configureTabBarAppearance() {
    let appearance = UITabBarAppearance()
    appearance.backgroundColor = .white
    UITabBar.appearance().standardAppearance = appearance
    UITabBar.appearance().scrollEdgeAppearance = appearance
}
Run Code Online (Sandbox Code Playgroud)

  • 简单而出色的解决方案... (2认同)