How do you hide/show UISearchBar's scope bar with animation?

后端 未结 2 619
余生分开走
余生分开走 2021-02-12 22:52

I want to show no scope bar when the table is empty (before the search bar edits for the first time), no scope bar when it\'s editing, and finally show it when editing done. I k

2条回答
  •  情深已故
    2021-02-12 23:34

    Here's how to make the cancel button and the scope bar to be displayed only while editing.

    Complete code with the small bonus of animating the cancel button’s (dis)appearance:

    - (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;
    }
    

    EDIT - Version 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
    }
    

    Source: http://www.alexandre-gomes.com/?p=418

提交回复
热议问题