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

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors