测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可 | MIT |
发布上次发布 | 2017年9月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Tristan Himmelman 维护。
一个易于使用的库(用 Swift 编写),可以管理用户滚动时隐藏和显示导航栏。
隐藏NavigationBar 支持隐藏/显示以下视图元素:
UIViewController
子类中包含一个类型为 HidingNavigationBarManager
的成员变量。viewDidLoad
函数中初始化该变量,传入 UIViewController
实例和将控制导航栏隐藏/显示的 UIScrollView
实例。UIViewController
生命周期函数转发给 HidingNavigationBarManager
变量override func viewWillAppear(animated: Bool)
override func viewWillDisappear(animated: Bool)
override func viewDidLayoutSubviews() //Only necessary when adding the extension view
最后转发以下 UIScrollViewDelegate
函数
func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool
以下是一个您 UIViewController
子类的示例
import HidingNavigationBar
class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var hidingNavBarManager: HidingNavigationBarManager?
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
hidingNavBarManager = HidingNavigationBarManager(viewController: self, scrollView: tableView)
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
hidingNavBarManager?.viewWillAppear(animated)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
hidingNavBarManager?.viewDidLayoutSubviews()
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
hidingNavBarManager?.viewWillDisappear(animated)
}
//// TableView datasoure and delegate
func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {
hidingNavBarManager?.shouldScrollToTop()
return true
}
...
}
注意:隐藏NavigationBar 仅与设置为透明(true) 的 UINavigationBars 一起工作。
let extensionView = // load your a UIView to use as an extension
hidingNavBarManager?.addExtensionView(extensionView)
if let tabBar = navigationController?.tabBarController?.tabBar {
hidingNavBarManager?.manageBottomBar(tabBar)
}
hidingNavBarManager?.onForegroundAction = .Default //Do nothing, state of bars will remain the same as when backgrounded
hidingNavBarManager?.onForegroundAction = .Hide //Always hide on foreground
hidingNavBarManager?.onForegroundAction = .Show //Always show on foreground
当导航栏隐藏时,您可以通过某种“阻力”在导航栏开始扩展之前添加延迟。阻力值是指用户在导航栏开始扩展之前需要滚动的距离。
hidingNavBarManager?.expansionResistance = 150
如果您正在使用 UIRefreshControl 与您的滚动视图,重要的是要让 HidingNavigationBarManager
了解这一点
hidingNavBarManager?.refreshControl = refreshControl
如果您使用 CocoaPods,请在您的 Podfile 中添加以下行
pod 'HidingNavigationBar', '~> 0.3'
否则,直接将以下文件包含到您的项目中