2017-12-24 12 views
0

다음은 제 코드입니다. 나는 키보드 상태를 관리하고 키보드 높이를 얻고, 또한 SnapKit을하기 위해 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.updateConstraints 당신이 snp.remakeConstraints를 사용할 필요가

를 사용할 수있는 제약 조건의 상수 값을 업데이트하는 경우

당신의 케이스. 또한 superviewlayoutIfNeeded으로 전화해야합니다.

선택적으로 당신은 변화하는 제약을 없애 수 있으며, 단지 쇼에 적절한 변환을 애니메이션 : 숨기기에

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

:

box.transform = .identity 
+0

감사합니다. 이것은 유익한 정보입니다! – Kira