카테고리 없음

[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
            }
        }
    }

 

반응형