不知怎的,我不知道为什么默认动画会失败。
我的搜索栏没有按原样向上移动。
视图在UIView中,我想知道这是否是问题。
包括IB布局
答案 0 :(得分:11)
搜索栏实际上并没有进入“俯卧撑”动画。而是在导航栏上升时保持原位,从而用它拉动视图的其余部分。您应该可以通过注册为其委托(UISearchBarDelegate)并响应这些调用,在代码中手动移动搜索栏。
#pragma mark - UISearchBarDelegate Methods
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
//move the search bar up to the correct location eg
[UIView animateWithDuration:.4
animations:^{
searchBar.frame = CGRectMake(searchBar.frame.origin.x,
0,
searchBar.frame.size.width,
searchBar.frame.size.height);
}
completion:^(BOOL finished){
//whatever else you may need to do
}];
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
//move the search bar down to the correct location eg
[UIView animateWithDuration:.4
animations:^{
searchBar.frame = CGRectMake(searchBar.frame.origin.x,
/*SearchBar original Y*/,
searchBar.frame.size.width,
searchBar.frame.size.height);
}
completion:^(BOOL finished){
//whatever else you may need to do
}];
}
答案 1 :(得分:2)
遵循Apple指南实施UISearchBar
和UISearchDisplayController
的最佳方法是查看名为TableSearch的示例,说明如下:
演示如何使用搜索UITableView的内容 UISearchBar和UISearchDisplayController,有效过滤 并输出该表的内容。如果是iPhone / iPod Touch 应用程序有大量的表数据,此示例显示如何 如果内存使用是一个问题,请将其过滤到可管理的数量 您只希望用户滚动较少的表格内容。
我希望这会对你有所帮助。
答案 2 :(得分:1)
在问题的第一张图片中,您正在显示正在使用的UISearchDisplayController。为了实现精确的动画,您需要使用UISearchDisplayController并将其修改为UISearchBar,使其看起来像您自定义的那个。您可以在Interface Builder中拖动UISearchDisplayController,然后使用代码更改它的searchBar属性。
如果你在Interface BUilder中正确连接了所有内容,那么 self.searchDisplayController.searchbar
将是您修改的内容。