嘿伙计们我已经使用largeNavigationBar
了,直到我刷回根视图控制器并且大导航以令人讨厌的方式获得清晰的颜色之前它已经确定了。这是代码:
func largeNavigationTitle() {
self.navigationController?.view.backgroundColor = VVUtility.navigationBarColor()
let productTitle = request?.product?.name
self.navigationItem.title = "\(productTitle ?? " ")".localized()
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: -2.0)]
if #available(iOS 11.0, *) {
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.backgroundColor = VVUtility.splashBackGroundColor()
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: 0.0)]
} else {
// Fallback on earlier versions
}
}
我已在largeNavigationTitle()
和viewWillAppear
viewDidLoad
更新
这是两种状态的屏幕截图: 在滑动之前:imgur.com/a/ZcSOrov 滑动时:imgur.com/a/DYeeot8
答案 0 :(得分:0)
您是否在代码中尝试过此操作?
self.navigationController.navigationBar.translucent = NO;
答案 1 :(得分:0)
这实际上是您的导航栏更改回底部控制器上的小栏模式。
这是因为导航栏不是半透明的。这将导致(默认情况下)内容控制器停止在导航栏的底部。因此,当导航栏再次变小时,它的新的较短的底部和视图控制器的顶部之间将没有内容。
您的层次结构如下所示:
现在UIViewController
上有一个属性,默认为false。您可以使用它来指定您希望控制器的视图在非透明栏下扩展:
extendedLayoutIncludesOpaqueBars = true
这立即使层次结构现在显示为:
现在,您应该再也没有差距了,但是您可能会遇到UI元素在栏下的问题。您可以通过使用安全区域插图并根据需要调整布局来解决此问题,根据您的布局,使用edgesForExtendedLayout
可能也会有所帮助。
TL; DR使用extendedLayoutIncludesOpaqueBars = true
答案 2 :(得分:0)
尝试一下。它将根View控制器的navigationBar的颜色设置为所需的颜色:
func largeNavigationTitle() {
self.navigationController?.view.backgroundColor = VVUtility.navigationBarColor()
//add the two lines below
self.navigationController?.navigationBar.barTintColor = VVUtility.navigationBarColor()
self.navigationController?.navigationBar.isTranslucent = false
let productTitle = request?.product?.name
self.navigationItem.title = "\(productTitle ?? " ")".localized()
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: -2.0)]
if #available(iOS 11.0, *) {
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.backgroundColor = VVUtility.splashBackGroundColor()
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: 0.0)]
} else {
// Fallback on earlier versions
}
}