重现问题的前提条件:
在实际设备中,状态栏将在绿色导航栏上方保留为白色。
我尝试的解决方案:
有任何想法吗?感谢您的帮助。
在Xcode 11 beta中编译了我的一个应用程序后,我注意到导航栏在prefersLargeTitles设置时没有背景。这是预期的行为吗?
我注意到这是向下滚动时消息应用程序现在的工作方式,可见一个大标题,没有导航栏背景。
这是用于设置navBar属性的代码:
override func viewWillAppear(_ animated: Bool) {
let textAttributes = [NSAttributedString.Key.foregroundColor:ThemeManager.shared.default1]
self.navigationController?.navigationBar.largeTitleTextAttributes = textAttributes
self.navigationController?.navigationBar.titleTextAttributes = textAttributes
self.navigationController?.navigationBar.tintColor = ThemeManager.shared.default1
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.prefersLargeTitles = true
let nav = self.navigationItem
nav.title = "My Profile"
}
Run Code Online (Sandbox Code Playgroud)
以下是一些显示差异的图像:
左,在Xcode 10上编译,右,在Xcode 11 beta上:
向上滚动至11 Beta版本后,背景会逐渐消失。请注意,未在Xcode 11 beta中编译的应用仍将以正常方式运行,仅在出于某些原因进行编译后才会更改。这是故意的,我将如何恢复原始行为?
代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UINavigationBar.appearance().barTintColor = .red
return true
}
Run Code Online (Sandbox Code Playgroud)
如果 prefersLargetitles 为 false 则没有问题。但是使用prefersLargeTitles = true,颜色不会改变。这曾经适用于 iOS 12。但由于 iOS 13 这不起作用。任何人都可以帮助如何在 iOS 13 中自定义导航栏