Как вы скрываете/показываете панель видимости UISearchBar с анимацией?

Я хочу показать панель видимости, когда таблица пуста (до того, как панель поиска редактируется в первый раз), при ее редактировании не отображается панель видимости и, наконец, показывается ее при редактировании. Я знаю о протоколе UISearchBarDelegate, но я не знаю, как показать/скрыть панель видимости с анимацией. Я знаю, что UISearchBar имеет setShowsScopeBar:, но не setShowsScopeBar:animated:, как это делается для setShowsCancelButton:animated.

Edit Очень важно вызвать [searchBar sizeToFit] после отображения/скрытия рамки. Есть ли хороший способ оживить это? (Должен ли я сделать этот? Он, похоже, не работает.)

Ответы

Ответ 1

Здесь, как сделать кнопку отмены и панель видимости отображаться только при редактировании.

Полный код с небольшим бонусом анимации кнопок отмены (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;
}

EDIT - версия 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
}

Источник: http://www.alexandre-gomes.com/?p=418