     private var bannerViewConstraint: NSLayoutConstraint?
     private var animator: UIViewPropertyAnimator?
     private var currentView: UIView?
+    private var visibleConstant: CGFloat = 0
     
     // MARK: - Computed Properties
     

                                    position: SwiftyAdsBannerPositition,
                                    animated: Bool = true,
                                    completion: (() -> Void)? = nil) {
        guard let viewController = viewController else {
            return
        }
        
        let newConstant: CGFloat
        
        switch position {
        case .top:
            newConstant = 0 - (bannerAd.adSize.size.height * 3) // *3 due to iPhoneX safe area
        case .bottom:
            newConstant = 0 + (bannerAd.adSize.size.height * 3) // *3 due to iPhoneX safe area
        }
        
        guard let bannerViewConstraint = bannerViewConstraint, bannerViewConstraint.constant != newConstant else {
            return
        }
             
        guard animated else {
            bannerAd.isHidden = true
            bannerViewConstraint.constant = newConstant
            return
        }
        
        bannerViewConstraint.constant = newConstant
        stopCurrentAnimatorAnimations()
        animator = UIViewPropertyAnimator(duration: animationDuration, curve: .easeOut) {

    func animateToOnScreenPosition(_ bannerAd: GADBannerView,
                                   from viewController: UIViewController?,
                                   completion: (() -> Void)? = nil) {
        // We can only animate the banner to its on-screen position with a valid view controller
        guard let viewController = viewController else {
            return
        }
        
        // We can only animate the banner to its on-screen position if its not already visible
        guard let bannerViewConstraint = bannerViewConstraint, bannerViewConstraint.constant != visibleConstant else {
            return
        }
        
        // Animate banner
        bannerAd.isHidden = false
        bannerViewConstraint.constant = visibleConstant
        
        stopCurrentAnimatorAnimations()
        animator = UIViewPropertyAnimator(duration: animationDuration, curve: .easeOut) {
