UISearchBar在开始编辑时拉伸文本

我有一个UISearchBar的实例添加到UINavigationBar的标题视图。 当文本已经被设置,并且search栏开始编辑时,它调整其内容以允许取消button的空间,但是最终的animation延伸文本,如下面的gif所示

在这里输入图像说明

有什么可以做的,以避免这种缺陷的影响? 我试图删除文本,然后稍后添加它,虽然它的作品,它不是一个优雅的解决scheme。

更新


基于@ Paruru的回答,我试图预测Cancelbutton的animation,它看起来不错。 我所做的就是强制在searchBarShouldBeginEditing:searchBarShouldBeginEditing: CancelbuttonsearchBarShouldBeginEditing:

 extension SearchViewController: UISearchBarDelegate { func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool { if searchBar.text?.isEmpty == false { // This avoids the text being stretched by the UISearchBar. searchBar.setShowsCancelButton(true, animated: true) } return true } } 

最终的结果是我想要实现的animation,没有文本被拉伸。 我认为这是一个解决方法,所以我会等待其他答案,因为这个代码可能不是未来的证据。

 - (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated NS_AVAILABLE_IOS(3_0); 

只需调用没有animation的方法。

 if (!self.isShowCancelBtn) { [self.searchBar setShowsCancelButton:YES animated:NO]; self.isShowCancelBtn = YES; }else{ [self.searchBar setShowsCancelButton:NO animated:NO]; self.isShowCancelBtn = NO; } 

您的更新解决scheme运作良好,除了当“search”占位符在没有文本时出现“取消”button时停止向左移动。 检查searchBar.text恢复animation:

 func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool { // This avoids the text being stretched by the UISearchBar. if searchBar.text?.isEmpty == false { searchBar.setShowsCancelButton(true, animated: true) } return true } 

我怀疑这可能只是Minimal UISearchBarStyle一个问题。