Skip to content

beastgrim/FAInteractivePopover

Repository files navigation

Platform Swift 4.2

FAInteractivePopover

An transitioning delegate for presenting and dismissing view controllers like AppleMusic player popover.

Preview

Usage

Presenting popover

class ViewController: UIViewController {
    
    lazy private var interactivePresentor = FAPopoverInteractiveTransition()
    
    @objc func show(_ sender: Any?) {
        let popover = PopoverViewController()
        popover.modalPresentationStyle = .custom
        popover.transitioningDelegate = self.interactivePresentor
        
        self.present(popover, animated: true, completion: nil)
    }
}

If your popover has scroll view for interaction

class PopoverViewController: UIViewController {

    weak var interactivePresentor: FAPopoverInteractiveTransition?
    
    var scrollView: UIScrollView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.scrollView = UIScrollView()
        //...
        // Enable dismiss interaction by your an scroll view
        self.interactivePresentor?.scrollView = self.scrollView
        // If needed
        self.interactivePresentor?.delegate = self
    }
}

Animating pull down view

extension PopoverViewController: FAPopoverInteractiveTransitionDelegate {
    
    func popoverInteractiveTransitionDidEndInteractive(_ interactiveTransition: FAPopoverInteractiveTransition) {
        self.pullDownView?.active = true
    }
    
    func popoverInteractiveTransition(_ interactiveTransition: FAPopoverInteractiveTransition, didChangeFractionCompleted fractionCompleted: CGFloat) {
        let active = !interactiveTransition.isInteractiveTransitionStarted || fractionCompleted == 0 || fractionCompleted == 1.0
        self.pullDownView?.active = active
    }
}

Author

Evgeny Bogomolov beastgrim@gmail.com

License

FAInteractivePopover is available under the MIT license. See the LICENSE file for more info.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published