2016-08-20 8 views
3

私はこの問題を多く研究しましたが、私にとってはうまくいきませんでした。UISearchControllerは、ステータスバーを不透明なUINavigationBarでカバーしません

基本的に、私はこのようなUISearchControllerを提示UIViewControllerを持っている:

let searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self 
searchController.delegate = self 
searchController.dimsBackgroundDuringPresentation = false 

searchController.searchBar.delegate = self 
view.addSubview(searchController.searchBar) 

ユーザーは、その後searchControllerを提示し、キーボードを明らかにUISearchBarをタップすると予想されます。しかし、コントローラ間の移行中に奇妙なことが起こります。

Overlap

UISearchControllerは、ステータスバーをカバーし、あなたは以下のことを提示UIViewControllerを見せなかったかのように思えます。 これを防止する方法、つまり検索コントローラをステータスバーの下に押し込む方法を探したいと思います。私はすでに行っている

もの:

  • 私はviewDidLoad:self.definesPresentationContext = trueを設定しています。
  • これは既知のバグ、つまりrdar:// 20942583であることが判明しました。
  • 私は設定して、バグを回避しようとしている:それは動作しませんでした

    self.edgesForExtendedLayout = .All 
    self.extendedLayoutIncludesOpaqueBars = true 
    

アイデアが不足しています。助けてください。

おかげで、束、 ピート。働いている

答えて

0

同じ問題に直面してherehereからすべてのものを試してみましたが、これのどれも私のために働いていない:(

ベストの回避策(私が知っている醜い)私はよりよい解決策が見つかるまで:

override func viewDidLoad() { 
    super.viewDidLoad() 
    searchController.delegate = self 
} 

func willPresentSearchController(searchController: UISearchController) { 

    let statusHeight = UIApplication.sharedApplication().statusBarFrame.size.height 

    if bgBar == nil { 
     bgBar = UIView(frame: CGRectMake(0, 0, view.frame.width, (navigationController?.navigationBar.frame.height)! + statusHeight)) 
     bgBar.backgroundColor = UIColor.redColor() 
     view.addSubview(bgBar) 
    } else { 
     bgBar.hidden = false 
    } 

    tableView.contentInset.top = statusHeight 
} 

func willDismissSearchController(searchController: UISearchController) { 

    bgBar.hidden = true 
    tableView.contentInset.top = 0 
} 
関連する問題