Scroll to hide navigationBar, tabBar and toolBar.
Adding too much UIGestureRecognizer
to the UIView
makes handling difficult, so it was handled by UIScrollViewDelegate
.
Mr. Gargo translated this README into Russian!🙇♂️
- Xcode 9.0+
- iOS 10+
- Swift 4.0+
pod 'SilentScrolly'
github "horitaku46/SilentScrolly"
See Example, for more details.
《1》 If you want to change the color of the statusBar, add func statusBarStyle(showStyle: UIStatusBarStyle, hideStyle: UIStatusBarStyle)
to the UINavigationController
.
import UIKit
final class NavigationController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
《2》 Please describe accordingly as below.
import UIKit
final class TableViewController: UIViewController, SilentScrollable {
override var preferredStatusBarStyle: UIStatusBarStyle {
return statusBarStyle(showStyle: .lightContent, hideStyle: .default) // Optional
}
@IBOutlet weak var tableView: UITableView! {
didSet {
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
tableView.delegate = self
tableView.dataSource = self
}
}
var silentScrolly: SilentScrolly?
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
silentDidLayoutSubviews()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
configureSilentScrolly(tableView, followBottomView: tabBarController?.tabBar)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
silentWillDisappear()
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
silentDidDisappear()
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
silentWillTranstion()
}
}
extension TableViewController: UITableViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
silentDidScroll()
}
func scrollViewDidZoom(_ scrollView: UIScrollView) {
silentDidZoom() // Optional
}
func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
showNavigationBar() // Optional
return true
}
}
extension TableViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = "Row: \(indexPath.row)"
return cell
}
}
SilentScrolly
is available under the MIT license. See the LICENSE file for more info.