UINavigationBar 在滚动/滑动隐藏后将不再显示
Posted
技术标签:
【中文标题】UINavigationBar 在滚动/滑动隐藏后将不再显示【英文标题】:UINavigationBar won't show again after hiding on scroll/swipe 【发布时间】:2017-03-20 08:25:41 【问题描述】:正如标题所说,navigationBar 在滚动隐藏后不会显示。我尝试在 xCode 中以及以编程方式设置它。无论哪种方式,问题仍然存在。
override func viewDidAppear(animated: Bool)
super.viewDidAppear(animated)
navigationController?.hidesBarsOnSwipe = true
这是隐藏导航栏后的样子。请注意,状态栏颜色也从白色变为黑色。
在 viewDidLoad 我有:
//MARK: navigation bar styles
self.navigationController?.navigationBar.backgroundColor = UIColor.init(red: 26/255, green: 24/255, blue: 24/255, alpha: 1)
self.navigationController?.navigationBar.clipsToBounds = true
self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName:UIFont(name:"GillSans", size: 20)!]
有人对此有好的解决方案吗?提前感谢您的帮助!
【问题讨论】:
你是否在代码中使用了另一个导航控制器? 你能发布你的 viewDidLoad 吗? @KKRocks 我不这么认为。我试过用 self.navigationController 还是一样 @Joe 我刚刚更新了问题,您可以在问题中找到 viewDidLoad 中的代码。谢谢 代码上传....值得一提的是还有更多方法可以实现这一点。让我知道。这就是你想要的...... 【参考方案1】:试试这个代码:
注意:当您将导航栏背景设置为接近黑色时。您必须将状态栏内容更改为浅色。
//用下面的代码更新你的plist
View controller-based status bar appearance = NO
在您的视图控制器中:
title = "Some Title"
navigationController?.navigationBar.barTintColor = UIColor(red: 26/255, green: 24/255, blue: 24/255, alpha: 1)
navigationController?.navigationBar.tintColor = UIColor.white
//Title Colour and Font
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"Arial", size: 20)!]
navigationController?.navigationBar.clipsToBounds = false
UIApplication.shared.statusBarStyle = .lightContent
override func viewDidAppear(_ animated: Bool)
navigationController?.hidesBarsOnSwipe = true
输出:
【讨论】:
更新plist文件的原因是什么?我通过使用以下代码使状态栏变为白色: //Change Status bar style override func preferredStatusBarStyle() -> UIStatusBarStyle return UIStatusBarStyle.LightContent 滚动后导航栏仍然不会出现。以上是关于UINavigationBar 在滚动/滑动隐藏后将不再显示的主要内容,如果未能解决你的问题,请参考以下文章
使用滑动隐藏的 UINavigationBar 会留下一个拦截点击以显示它的区域?
如何隐藏 UINavigationBar 但仍然向左滑动以自动返回手势?