1

아이폰 OS 11에서 제대로 숨길 수UISearchController 내가 탭 후 탐색 모음을 숨길

navigationController?.hidesBarsOnTap = true 

내비게이션 바는 탭 hide Navigation Bar

후 그러나 searchController (코드를 추가 한 후 제대로 숨 깁니다 아래)

let searchController = UISearchController(searchResultsController: nil) 
navigationItem.searchController = searchController 
내보기 (시안 색) 제대로 확장되지 수

not properly

그리고 나는 그것을 회전시켜 보았습니다. 검색 창이 나타납니다.

enter image description here

답변

0

마지막 해결책을 발견

override func viewDidLoad() { 
    super.viewDidLoad() 

    navigationController?.barHideOnTapGestureRecognizer.addTarget(self, action: #selector(barHideAction(_:))) 
    let searchController = UISearchController(searchResultsController: nil) 
    navigationItem.searchController = searchController 
    navigationItem.hidesSearchBarWhenScrolling = false 
    navigationController?.hidesBarsOnTap = true 
} 

@objc func barHideAction(_ guesture: UITapGestureRecognizer) { 
    updateFrame() 
} 

func updateFrame() { 
    if let nc = navigationController { 
     let isHidden = nc.isNavigationBarHidden 
     searchController.searchBar.superview?.isHidden = isHidden 

     if isHidden { 
      self.additionalSafeAreaInsets.top = -64 // fixed by a magic num 
     } 
     else { 
      self.additionalSafeAreaInsets.top = 0 
     } 
    } 
} 

example code