我希望在表为空时(在搜索栏第一次编辑之前)不显示范围栏,在编辑时不显示范围栏,最后在编辑完成时显示范围栏。我知道UISearchBarDelegate协议,但我不知道如何用动画显示/隐藏范围栏。我知道UISearchBar有setShowsScopeBar:
,但没有像setShowsCancelButton:animated
那样的setShowsScopeBar:animated:
。
编辑在显示/隐藏范围栏之后调用[searchBar sizeToFit]
是很重要的。有没有一个很好的方法来制作动画呢?(我应该做this吗?它似乎不起作用。)
发布于 2011-05-30 14:23:32
下面是如何使取消按钮和范围栏仅在编辑时显示。
使用动画cancel按钮(Dis)的外观来完成代码:
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
searchBar.showsScopeBar = YES;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:YES animated:YES];
return YES;
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
searchBar.showsScopeBar = NO;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:NO animated:YES];
return YES;
}
编辑-版本Swift 3
public func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
searchBar.showsScopeBar = true
searchBar.sizeToFit()
searchBar.setShowsCancelButton(true, animated: true)
return true
}
public func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
searchBar.showsScopeBar = false
searchBar.sizeToFit()
searchBar.setShowsCancelButton(false, animated: true)
return true
}
发布于 2020-04-28 19:17:23
对于较新的iOS版本(在11-13进行了测试),您不必实现任何委托方法即可工作。
在iOS 13中,默认行为是始终显示范围栏,即使搜索处于非活动状态。以前的iOS版本会在搜索处于活动状态时自动显示和隐藏范围栏。
您需要在viewDidLoad()
中添加以下内容
if #available(iOS 13.0, *) {
searchController.automaticallyShowsScopeBar = true
}
https://stackoverflow.com/questions/3058015
复制相似问题