2017-09-04 122 views
9

UISearchBar在iOS 11和iOS 10及更低版本中表現不同。iOS 11導航欄中的UISearchBar

  • 大小已更改
  • 推動控制的另一觀點是缺少

我處理與此代碼以某種方式「解決」大小時的淡出動畫:

if #available(iOS 11.0, *) { 
    searchBar.heightAnchor.constraint(equalToConstant: 44).isActive = true 
} 

但我無法修復動畫。任何想法,除了只是手動推動搜索欄的動畫?

UIView.animate(withDuration: 0.3, animations: { [weak self] in 
    guard let strongSelf = self else { return } 
    strongSelf.searchBar.alpha = 0.0 
}) 

看到一個視頻的破碎的動畫效果here

+1

我有同樣的問題,你是如何解決它的? – sancho

回答

2

查看UIPercentDrivenInteractiveTransition的回答。它在UINavigationController轉換中使用更新UIViews persentage值。

換句話說,取決於UINavigationController已打開多少個視圖控制器或向後移動的視圖會有不同的外觀。

此值將幫助您更新搜索欄(α,寬度等)

+0

這是管理這些事情的最正確和最簡單的方法。你會在網上找到很多例子。對不起,我沒有準備任何代碼,因爲我正在做這個長篇大論,並且很多代碼可能會被剔除爲iOS 10+ – ObranS

+0

從您的答案中,不明白如何將動畫添加到UISearchBar。 – user1561346

+0

這似乎是一個很好的答案,但我不知道如何去做。 – Alex

3

只是一個UIView紙包起來,然後動畫回來。

+1

然後UIView完全消失。我必須指定尺寸嗎? – Sti

+0

@ awuu,我在iOS11中得到了類似的問題,當我使用UISearchBar作爲titleView時,並且當我彈出這個控制器時,ViewController現在顯示的將與導航欄相距一定距離,並且當我按照你說的去做,將視圖中的搜索欄包起來,然後將此視圖設置爲titleView,這個問題不會發生,但我仍然想知道爲什麼會發生這種情況? – ximmyxiao

+0

@Sti是的。自動佈局將做到這一點。 – awuu