美文网首页
获取键盘出现、隐藏动画

获取键盘出现、隐藏动画

作者: hie | 来源:发表于2020-06-02 17:15 被阅读0次
注册通知:
       NotificationCenter.default.rx.notification(UIResponder.keyboardWillShowNotification)
        .subscribe {[weak self] (e) in
            self?.notiHandle(userInfo:  (e.element?.userInfo!)!,show: true)
        }.disposed(by: rx.disposeBag)
        
       NotificationCenter.default.rx.notification(UIResponder.keyboardWillHideNotification)
        .subscribe {[weak self]  (e) in
            self?.notiHandle(userInfo:  (e.element?.userInfo!)!,show: false)
        }.disposed(by: rx.disposeBag)


   //MARK: 键盘处理
    func notiHandle(userInfo: [AnyHashable : Any], show: Bool){
        let duration = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey]
        let curve = userInfo[UIResponder.keyboardAnimationCurveUserInfoKey]
        let keyboardBeginBounds = userInfo[UIResponder.keyboardFrameBeginUserInfoKey]
        let keyboardEndBounds = userInfo[UIResponder.keyboardFrameEndUserInfoKey]
        
        _ = keyboardBeginBounds.value as! CGRect
        let endRect = keyboardEndBounds.value as! CGRect
        
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationBeginsFromCurrentState(true)
        UIView.setAnimationDuration(duration as! TimeInterval)
        UIView.setAnimationCurve(UIView.AnimationCurve(rawValue: curve.value as! Int)!)
        
        //MARK: 键盘升起/隐藏期间,执行自定义动画
        self.contentView.snp.updateConstraints { (m) in
            if show {
                m.bottom.equalToSuperview().offset(-endRect.size.height)
            }else {
                m.bottom.equalToSuperview()
            }
        }
        
        self.layoutIfNeeded()
        UIView.commitAnimations()
    }

相关文章

网友评论

      本文标题:获取键盘出现、隐藏动画

      本文链接:https://www.haomeiwen.com/subject/dcfpzhtx.html