獲取鍵盤出現(xiàn)、隱藏動(dòng)畫

注冊通知:
       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: 鍵盤升起/隱藏期間,執(zhí)行自定義動(dòng)畫
        self.contentView.snp.updateConstraints { (m) in
            if show {
                m.bottom.equalToSuperview().offset(-endRect.size.height)
            }else {
                m.bottom.equalToSuperview()
            }
        }
        
        self.layoutIfNeeded()
        UIView.commitAnimations()
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容