获取键盘出现、隐藏动画

注册通知:
       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()
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容