12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- //
- // IHPresentBottom.swift
- // Inhealth
- //
- // Created by weclouds on 2020/1/7.
- // Copyright © 2020 weclouds. All rights reserved.
- //
- import UIKit
- class IHPresentBottom: UIPresentationController {
- var controllerHeight : CGFloat? = 0
-
- lazy var backView: UIView = {
- let backView = UIView(frame: self.containerView!.bounds)
- backView.backgroundColor = UIColor.black.withAlphaComponent(0.4)
- let tap = UITapGestureRecognizer(target: self, action: #selector(onclick(_:)))
- tap.numberOfTapsRequired = 1
- tap.numberOfTouchesRequired = 1
- backView.addGestureRecognizer(tap)
- return backView
- }()
-
- override init(presentedViewController: UIViewController, presenting presentingViewController: UIViewController?) {
- super.init(presentedViewController: presentedViewController, presenting: presentingViewController)
- controllerHeight = presentedViewController.controllerHeight == 0 ? KSCREENHEIGHT : presentedViewController.controllerHeight
-
- }
-
- override func presentationTransitionWillBegin() {
- super.presentationTransitionWillBegin()
- self.backView.alpha = 0
- self.containerView?.addSubview(self.backView)
- UIView.animate(withDuration: 1.0) {
- self.backView.alpha = 1
- }
- }
-
- override func dismissalTransitionWillBegin() {
- super.dismissalTransitionWillBegin()
- UIView.animate(withDuration: 1.0) {
- self.backView.alpha = 0
- }
- }
-
- override func dismissalTransitionDidEnd(_ completed: Bool) {
- super.dismissalTransitionDidEnd(completed)
- if completed == true {
- self.backView.removeFromSuperview()
- }
- }
-
-
- override var frameOfPresentedViewInContainerView: CGRect{
- return CGRect(x: 0, y: KSCREENHEIGHT - controllerHeight!, width: KSCREENWIDTH, height: controllerHeight!)
- }
- @objc func onclick(_ gestureRecognzier:UIGestureRecognizer) {
- let point = gestureRecognzier.location(in: self.backView)
- let frame = self.frameOfPresentedViewInContainerView
- if frame.contains(point) == false {
- self.presentedViewController .dismiss(animated: true, completion: nil)
- }
- }
- }
|