UISearchBar提示符在导航栏中没有动画

时间:2013-12-28 09:08:43

标签: ios iphone uitableview animation uisearchbar

2014年3月25日更新

看起来缺少动画是iOS 7.0中的一个错误,并且已在iOS 7.1中修复。

原始问题

通常情况下,当您点击iOS 7中的搜索栏内部时,它会有一个漂亮的小动画,其中放大镜和“搜索”文本从搜索栏的中间滑动到左侧。但是,如果我将搜索栏放在导航栏中而不是在表格视图中,则它不再是动画。相反,放大镜和“搜索”文本会立即跳到搜索栏的左侧。

您可以使用Apple的UISearchBar sample project轻松看到这一点。打开故事板。在Search Display Controller上添加一个布尔运行时属性displaysSearchBarInNavigationBar,并选中它创建的复选框。然后,将搜索栏向上移动到树中的一个级别,使其位于表视图之外。运行项目,搜索栏现在应该在导航栏中。请注意,当您点按搜索栏时,它不会设置动画。

有没有人成功将UISearchBar放入iOS 7的导航栏中,并让它正常运行?

要清楚,我的问题是当用户点击搜索栏时,下面的第一个和第二个屏幕截图之间没有搜索栏的动画。

before after

1 个答案:

答案 0 :(得分:5)

在iOS 7中,UISearchDisplayController默认支持此功能。设置UISearchDisplayController的displaysSearchBarInNavigationBar = YES以使其轻松工作。

Apple Inc Doc: 从iOS 7.0开始,您可以使用带有的搜索显示控制器 导航栏(UINavigationBar类的一个实例)by 配置搜索显示控制器 displaysSearchBarInNavigationBar和navigationItem属性。

您的预期答案

从表格视图中删除搜索栏。使用displaysSearchBarInNavigationBar意味着UISearchDisplayController将负责将搜索栏放在层次结构中。

- (void)viewDidLoad
{
    self.searchDisplayController.displaysSearchBarInNavigationBar=YES;   
}

enter image description here

这不是动画第一次点击,但动画在取消时刻效果很好:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{ 
[searchBar setShowsCancelButton:YES animated:YES]; 

} 


-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar 
{ 
[searchBar setShowsCancelButton:NO animated:YES]; 
}