2017-04-07 4 views
0

방금 ​​UISearchController를 일반 UIViewController에서 구현했으며 별난 문제가 있습니다.UISearchController searchBar 프레임은 첫 번째 클릭시에만 크기가 조절됩니다.

나는 내 UISearchBar가 취할만한 크기에 맞게 조정 된 UIView를 가지고 있습니다. 처음 뷰를 시작할 때 UISearchBar를이 UIView에 SubView로 추가합니다. 하지만 UISearchBar를 실행하면 부모 UIView의 크기가 적용되지 않습니다. 전체 화면의 너비가됩니다. 당신이 볼 수 있듯이

enter image description here

, 그것은 오른쪽에있는 버튼으로 겹칩니다.

하지만 검색 막대를 클릭하고 취소하면 원하는 크기로 크기가 조정됩니다. 여기에 문제가 될 수 무엇

enter image description here

? SearchLar에서 AutoLayout Constraints를 상위 뷰로 추가하려고 시도했지만 아무 것도 변경하지 않는 것 같습니다. [UIView addSubview :] 이것을 처리하지 않습니까?

답변

1

UISearchController의보기 동작은 실제로 이상하지만 간단한 해결 방법이 있습니다.

  • UIViewAutoresizingFlexibleWidth에
  • 세트 UISearchController의 뷰 자동 크기 마스크 내부 UISearchController의보기를 넣어
  • 추가 컨테이너보기를 사용하여 | 이 시점 UISearchController.view에서 컨테이너의 뷰 경계

에 UIViewAutoresizingFlexibleHeight

  • 세트 UISearchController의 프레임은 container.bounds 이상으로 크기를 조정하지 않습니다.

  • +0

    메시지를 보내 주셔서 감사합니다. 나는 정확히 이해하지 못한다. - 지금 내가하고있는 일이다. 그렇지? 이미 컨테이너에 SearchBar를 추가하고 있습니다! –

    +0

    내가 지금 올바르게 컨테이너를 이해한다면 uiseachcontroller.view가 하위보기로 추가 된 최상위보기 컨트롤러 (일명 visibleVC.view)의보기입니다. 내가 제안하는 것은 visibleVC.view의 서브 뷰로서 추가적인 컨테이너 뷰 (화면의 너비 ~ 80 % 및 uiseachcontroller.view와 동일한 높이)를 추가하는 것입니다. 그런 다음이 새로 생성 된 컨테이너 뷰에 uisearchcontroller 뷰를 추가하십시오. –

    +0

    두 번째 그림에서 UISearchBar의 정확한 크기를 가진 Container View가 이미 있습니다. UISearchController도 추가 한 UIView입니다. 그것이 내가 이해하지 못하는 이유입니다. 한 번 클릭하면 작동하지만, 처음 실행하면 작동하지 않습니다. –