17

テーブルが空のとき (検索バーが初めて編集される前) はスコープ バーを表示せず、編集中はスコープ バーを表示せず、最後に編集が完了したときにそれを表示したいと考えています。UISearchBarDelegate プロトコルについては知っていますが、アニメーションでスコープ バーを表示/非表示にする方法がわかりません。UISearchBar には があることは知っていますがsetShowsScopeBar:、 のsetShowsScopeBar:animated:場合はそうではありませんsetShowsCancelButton:animated

編集[searchBar sizeToFit]スコープバーを表示/非表示にした後 に呼び出すことが重要です。これをアニメーション化する良い方法はありますか?(これを行う必要がありますか?動作していないようです。)

4

2 に答える 2

46

編集中のみキャンセルボタンとスコープバーを表示する方法は次のとおりです。

キャンセルボタンの(非)外観をアニメーション化するという小さなボーナスを含む完全なコード:

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

編集-バージョンSwift3

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

于 2011-05-30T06:23:31.620 に答える