2017-12-24 17 views
0

ここに私のコードです。私はキーボードの状態を管理し、キーボードの高さを取得するためにKeyboardHelperライブラリを使用しています。キーボードをトリガーするテキストフィールドがあります。キーボードが見えるとき、私はキーボードの境界の上に青色のボックスを表示したいので、それは見えます。これまで私はそうしていませんでした。私のコードで助けてくれますか? SnapKitのドキュメントによるとSnapKitとSwiftで下限制約を更新する4

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

あなただけあなたがあなたにsnp.remakeConstraintsを使用する必要があるメソッドsnp.updateConstraints

を使用することができ、制約の一定の値を更新する場合場合。さらにsuperviewlayoutIfNeededと呼ぶべきでしょう。

オプションでは、変更制約を取り除くことができ、ちょうどショーに適切な変換をアニメーション化:非表示に

box.transform = CGAffineTransform(translationX: 0.0, y: neededTranslation) 

box.transform = .identity 
+0

感謝。これは有益です! – Kira

関連する問題