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

Chr*_*lli 3 iphone animation uitableview uisearchbar ios

更新03/25/14

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

原始问题

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

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

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

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

之前 后

cod*_*cat 5

在iOS 7中,UISearchDisplayController默认支持此功能.设置UISearchDisplayController displaysSearchBarInNavigationBar = YES为使其易于使用.

Apple Inc Doc: 从iOS 7.0开始,您可以通过配置搜索显示控制器的displaysSearchBarInNavigationBar和navigationItem属性,将搜索显示控制器与导航栏(UINavigationBar类的实例)配合使用.

你的预期答案

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

- (void)viewDidLoad
{
    self.searchDisplayController.displaysSearchBarInNavigationBar=YES;   
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

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

} 


-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar 
{ 
[searchBar setShowsCancelButton:NO animated:YES]; 
}
Run Code Online (Sandbox Code Playgroud)