BlowinSwiper

https://github.com/horitaku46/BlowinSwiper

Обзор

BlowinSwiper позволяет делать жест свайпа назад из любого места экрана на UINavigationController! Разработан для отлавливали различных жестов, но в текущий момент работает только со свайпом.

Особенности

Напоминает клиентское приложение твиттера, а также SwipeMenuViewController. Поддерживает iPhone, iPad и iPhone X!

Требования

Xcode 9.0+
iOS 10+
Swift 4.0+

Установка

Cocoapods

pod 'BlowinSwiper'

Carthage

github "horitaku46/BlowinSwiper"

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

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

Обычное использование
1)добавьте UIGestureRecognizerDelegate к UINavigationController для того, чтобы разрешить свайп назад:

import UIKit

final class NavigationController: UINavigationController {
    override func viewDidLoad() {
        super.viewDidLoad()
        interactivePopGestureRecognizer?.delegate = self
    }
}

extension NavigationController: UIGestureRecognizerDelegate {
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
                           shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }
}

2)реализуйте протокол BlowinSwipeable в UIViewController и вызовите configureSwipeBack() во viewDidAppear:

import UIKit

final class ViewController: UIViewController, BlowinSwipeable {

    var blowinSwiper: BlowinSwiper?

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        configureSwipeBack()
    }
}

Горизонтальный скролл
1)аналогично первому шагу при обычном использовании
2)Следуйте указаниям:
— реализуйте протокол BlowinSwipeable в UIViewController
— вызовите configureSwipeBack(isLowSensitivity: true) и enabledRecognizeSimultaneously(scrollView: swipeMenuView.contentScrollView) во viewDidAppear
— вызовите disabledRecognizeSimultaneously() во viewDidDisappear

import UIKit

final class ViewController: UIViewController, BlowinSwipeable {

    var blowinSwiper: BlowinSwiper?

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        configureSwipeBack(isInsensitive: true)
        enabledRecognizeSimultaneously(scrollView: swipeMenuView.contentScrollView)
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        disabledRecognizeSimultaneously()
    }
}

extension MenuViewController: SwipeMenuViewDelegate {
    func swipeMenuViewDidScroll(_ contentScrollView: UIScrollView) { // added itself to this delegate.
        handleScrollRecognizeSimultaneously(scrollView: contentScrollView)
    }
}

Автор
Takuma Horiuchi
https://www.facebook.com/profile.php?id=100008388074028
https://twitter.com/horitaku_
https://github.com/horitaku46

Лицензия — MIT

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

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