这是我的代码。我使用KeyboardHelper库来管理键盘状态和获得键盘高度,还使用SnapKit。我有一个触发键盘的文本字段。当键盘可见时,我想在键盘边界上方抬起蓝框,这样它就可见了。到目前为止,我没有这样做。你能帮我解决一下我的代码吗?
private var keyboardHelper : KeyboardHelper?
let box = UIView()
override func viewDidLoad() {
super.viewDidLoad()
keyboardHelper = KeyboardHelper(delegate: self)
guard let superview = self.view else {
return
}
box.backgroundColor = UIColor.blue
superview.addSubview(box)
box.snp.makeConstraints { make in
make.bottom.equalTo(superview.snp.bottom).offset(-16)
make.width.equalTo(200)
make.centerX.equalTo(superview)
make.height.equalTo(100)
}
}
func keyboardWillAppear(_ info: KeyboardAppearanceInfo) {
UIView.animate(withDuration: TimeInterval(info.animationDuration), delay: 0, options: info.animationOptions, animations: {
self.box.snp.updateConstraints({ make in
make.bottom.equalTo(info.endFrame.size.height).offset(10)
})
self.box.layoutIfNeeded()
}, completion: nil)
}
答案 0 :(得分:0)
根据SnapKit文档:
如果您只更新约束的常量值,可以使用方法snp.updateConstraints
您需要在案例中使用snp.remakeConstraints
。此外,您应该在layoutIfNeeded
上致电superview
。
您可以选择摆脱不断变化的约束,只需在show:
上设置正确的变换动画box.transform = CGAffineTransform(translationX: 0.0, y: neededTranslation)
on hide:
box.transform = .identity