升级到 XCode 13 (& iOS 15) 后选项卡和导航栏发生变化
Tab & Navigation Bar changes after upgrading to XCode 13 (& iOS 15)
我有一个 iOS 应用程序,自升级到 Xcode 13 后,我注意到 Tab 和 Navigation 有一些特殊的变化 酒吧。在 Xcode 13 中,选项卡和导航栏上现在有这个黑色区域,启动应用程序时,选项卡栏和导航栏现在都是黑色的。奇怪的是,如果视图有滚动或表格视图,如果我向上滚动,底部的标签栏会恢复其白色,如果我向下滚动,导航栏会恢复其白色。
N:B: 我已经从 iOS 13 及以上强制使用浅色主题:
if #available(iOS 13.0, *) {
window!.overrideUserInterfaceStyle = .light
}
任何人都可以帮助或指出正确的方向来处理这种特殊情况吗?
是否有简单的修复方法来重新调整情节提要,或者在这种情况下我必须手动更改每个视图?
升级前的 Storyboard 示例:
及之后:
(分别)升级前后的模拟器屏幕:
首先问题是取消选中半透明引起的
我通过从属性检查器滚动边缘选择导航栏外观来修复它
它会修复它 see this screen shot please
关于Navigation Bar是黑色的,试试看:
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
我写了一篇新文章谈论它。
https://medium.com/@eduardosanti/uinavigationbar-is-black-on-ios-15-44e7852ea6f7
更新到 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
}
我的问题已通过以下方式解决,请将导航栏右侧的颜色替换为您想要的颜色
navigationController?.navigationBar.backgroundColor = .lightGray
对我来说,Navbar 和 TabBar 都有问题,所以我在 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
}
您可以通过选择标签栏在故事板中执行此操作,并在属性检查器中选择标准外观和滚动边缘外观,将它们的设置设置为 iOS13 以及您需要的自定义字体或颜色将 Standard Layout Appearances Stacked 更改为 Custom 并设置属性。
对于导航栏,您可以在属性检查器中类似地设置标准和滚动边缘外观,但这已在堆栈溢出的其他地方提到。
in XCode13.0 and iOS 15.0 标签栏和导航栏透明问题以编程方式解决 100%
对于标签栏
if #available(iOS 15, *) {
let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
UITabBar.appearance().standardAppearance = appearance
UITabBar.appearance().scrollEdgeAppearance = appearance
}
对于导航栏
if #available(iOS 15, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
}
我有一个 iOS 应用程序,自升级到 Xcode 13 后,我注意到 Tab 和 Navigation 有一些特殊的变化 酒吧。在 Xcode 13 中,选项卡和导航栏上现在有这个黑色区域,启动应用程序时,选项卡栏和导航栏现在都是黑色的。奇怪的是,如果视图有滚动或表格视图,如果我向上滚动,底部的标签栏会恢复其白色,如果我向下滚动,导航栏会恢复其白色。
N:B: 我已经从 iOS 13 及以上强制使用浅色主题:
if #available(iOS 13.0, *) {
window!.overrideUserInterfaceStyle = .light
}
任何人都可以帮助或指出正确的方向来处理这种特殊情况吗?
是否有简单的修复方法来重新调整情节提要,或者在这种情况下我必须手动更改每个视图?
升级前的 Storyboard 示例:
及之后:
(分别)升级前后的模拟器屏幕:
首先问题是取消选中半透明引起的 我通过从属性检查器滚动边缘选择导航栏外观来修复它 它会修复它 see this screen shot please
关于Navigation Bar是黑色的,试试看:
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
我写了一篇新文章谈论它。
https://medium.com/@eduardosanti/uinavigationbar-is-black-on-ios-15-44e7852ea6f7
更新到 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
}
我的问题已通过以下方式解决,请将导航栏右侧的颜色替换为您想要的颜色
navigationController?.navigationBar.backgroundColor = .lightGray
对我来说,Navbar 和 TabBar 都有问题,所以我在 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
}
您可以通过选择标签栏在故事板中执行此操作,并在属性检查器中选择标准外观和滚动边缘外观,将它们的设置设置为 iOS13 以及您需要的自定义字体或颜色将 Standard Layout Appearances Stacked 更改为 Custom 并设置属性。
对于导航栏,您可以在属性检查器中类似地设置标准和滚动边缘外观,但这已在堆栈溢出的其他地方提到。
in XCode13.0 and iOS 15.0 标签栏和导航栏透明问题以编程方式解决 100%
对于标签栏
if #available(iOS 15, *) {
let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
UITabBar.appearance().standardAppearance = appearance
UITabBar.appearance().scrollEdgeAppearance = appearance
}
对于导航栏
if #available(iOS 15, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
}