2017-09-04 111 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