iOS/UIKIT

왜 서치바 heightAnchor 의 값을 변경했는데.. 왜 높이 조절 안됨?

밤새는 탐험가89 2024. 10. 11. 04:31

UISearchBar의 높이를 44에서 100으로 변경했을 때, 높이가 바뀌지 않고 상단에서 내려오는 현상은 UISearchBar의 고정된 기본 높이 때문입니다. UISearchBar는 기본적으로 iOS에서 제공하는 표준 UI 컴포넌트 중 하나로, Apple에서 정해놓은 특정 레이아웃을 따릅니다. 따라서 직접적으로 높이를 변경하는 것이 예상대로 동작하지 않을 수 있습니다.

문제의 원인:

UISearchBar는 시스템에서 고정된 높이를 가지고 있어, 높이를 강제로 변경하려고 하면 종종 문제가 발생합니다. 특히 UISearchBar는 내부적으로 특정 레이아웃과 제약 조건을 가지고 있어, 기본적으로 약 44포인트의 높이를 유지합니다. 높이를 더 크게 하려는 시도가 충돌을 일으켜 오히려 레이아웃이 깨질 수 있습니다.

해결 방법:

  1. UISearchBar의 기본 높이를 유지하고 내부 패딩을 조정하는 방법이 일반적입니다.
  2. UISearchBar의 내부 요소들을 커스터마이징하기 위해 서브클래싱을 사용하거나, 직접 서치 UI를 구성하여 비슷한 디자인을 구현하는 방법이 있습니다.

기본적으로 높이를 변경할 수 없기 때문에 커스터마이징하거나 다른 UI 컴포넌트로 직접 구현하는 것을 추천합니다.

해결책 1: 기본 높이 유지, 패딩 조정

searchBar.searchTextField.leftView = nil // 아이콘 제거
searchBar.searchTextPositionAdjustment = UIOffset(horizontal: 10, vertical: 30) // 텍스트 필드 위치 조정

 

해결책 2: UISearchBar 대체 UI 사용

서치바와 비슷한 커스텀 UIView를 만들고, 그 안에 UITextField와 같은 컴포넌트를 사용하여 유연하게 높이와 레이아웃을 조절하는 방법도 있습니다.

 

 

🔥 이거는 앞으로 커스텀한다면 대체 UI를 사용하는게 낫겠다...