카테고리 없음
[Swift - UIKit] 키보드 올라가면 생기는 공백
분홍이귀여워
2024. 11. 8. 16:35
반응형
키보드가 올라가면 뷰도 키보드의 높이만큼 y 축으로 이동하게 만든후 위 사진처럼 공백이 생겼다.
찾아보니 테이블뷰의 하단 제약조건을 설정할때 view 가 아닌 safeArea 로 했기 때문이다.
그럴때는 테이블뷰 하단 제약조건을 view로 해주면 된다.
// 기존 코드
lazy var tableViewBottomAnchorConstraint = tableView.bottomAnchor.constraint(equalTo: self.safeAreaLayoutGuide.bottomAnchor, constant: 0)
//변경 코드
lazy var tableViewBottomAnchorConstraint = tableView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0)
하지만 view를 사용하면 노치, 홈 인디케이터, 상태 바 등을 포함하는 영역이다. 아래 처럼 각자의 상황에 맞게 사용하면 된다.
- 일반적인 콘텐츠 → Safe Area
- 탭바/네비게이션바 아래 콘텐츠 → Safe Area
- 전체 화면 요소, 키보드 관련 → view
- 배경 이미지/색상 → view
나의 경우 네비게이션바와 탭바를 사용중이여서 테이블뷰의 하단 제약조건을 view보다는 safeArea로 잡아주고 키보드 높이에서 safeArea 영역을 빼기로 했다.
func adjustForKeyboard(notification: NSNotification, bottomConstraint: NSLayoutConstraint, vc: UIViewController) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue) {
let keyboardHeight = keyboardSize.cgRectValue.height - vc.view.safeAreaInsets.bottom
if bottomConstraint.constant == 0 {
bottomConstraint.constant -= keyboardHeight
}
}
}
반응형