UISearchController searchBar框架只能在第一次点击时resize

我刚刚在一个普通的UIViewController中实现了一个UISearchController,而且我有一个奇怪的问题。

我有一个UIView完全适应我想我的UISearchBar采取的大小。 在第一次启动的视图,我把我的UISearchBar作为一个子视图添加到这个UIView。 但是当我启动它的时候,UISearchBar并不占用其父UIView的大小 – 它只占用整个屏幕的宽度。

在这里输入图像说明

如您所见,它与右侧的button重叠。

但是,一旦我点击search栏并取消它,它调整到我想要的确切大小。

在这里输入图像说明

这里可能是什么问题? 我已经尝试将AutoLayout约束从SearchBar添加到其父视图,但它似乎并没有改变任何东西。 不[UIView addSubview:]处理这个?

UISearchController的视图行为确实很奇怪,但是有一个简单的解决方法。

  • 使用额外的容器视图
  • 把UISearchController的视图里面
  • 将UISearchController的view autoresizing mask设置为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
  • 将UISearchController的框架设置为容器的视图边界

在这一点上,UISearchController.view将不会调整超出container.bounds。