SilentScrolly

https://github.com/horitaku46/SilentScrolly

Скролл с прятанием navigationBar, tabBar и toolBar.

Особенности

Можно добавить к UIView много UIGestureRecognizer, но их трудно обрабатывать, поэтому все обрабатывается через UIScrollViewDelegate.

Требования

Xcode 9.0+
iOS 10+
Swift 4.0+

Установка

CocoaPods

pod ‘SilentScrolly’

Carthage

github «horitaku46/SilentScrolly»

Использование

См. пример (https://github.com/horitaku46/SilentScrolly/tree/master/Example)

1)если нужно изменить цвет statusBar добавьте func statusBarStyle(showStyle: UIStatusBarStyle, hideStyle: UIStatusBarStyle) к UINavigationController.

import UIKit

final class NavigationController: UINavigationController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return topViewController?.preferredStatusBarStyle ?? .default
    }
}

2)реализуйте в точностью как описано ниже

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
    }
}

Автор

Takuma Horiuchi

Facebook (https://www.facebook.com/profile.php?id=100008388074028)
Twitter (https://twitter.com/horitaku_)
GitHub (https://github.com/horitaku46)

Лицензия MIT

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Solve : *
16 − 5 =