6

次のように自動レイアウトを使用して設定されたテーブル ビューの上に検索バーがあります。

_searchBar.translatesAutoresizingMaskIntoConstraints = NO;
_tableView.translatesAutoresizingMaskIntoConstraints = NO;

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_searchBar]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_searchBar)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_tableView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableView)]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_searchBar][_tableView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_searchBar, _tableView)]];

実行するとすべてがきれいに見えます。しかし_searchBar.showsScopeBar = YES;、検索バーの編集を開始する前に行うと、検索バーとテーブル ビューのサイズが自動的に変更されません。しても[_searchBar sizeToFit]、テーブルビューのサイズが変更されず、下に移動しません。どうして??

注: テーブル ビューのヘッダーとして検索バーを配置していません。親ビューと 2 つのサブビューだけです。注 2:呼び出す前後のサイズを確認したところintrinsicContentSize、実際にサイズが変わりました。_searchBar_searchBar.showsScopeBar = YES;

4

1 に答える 1

4

あなたがする必要がありますinvalidateIntrinsicContentSize

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    searchBar.showsScopeBar = YES;
    [searchBar invalidateIntrinsicContentSize];
    [searchBar setShowsCancelButton:YES animated:YES];
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    searchBar.showsScopeBar = NO;
    [searchBar invalidateIntrinsicContentSize];
    [searchBar setShowsCancelButton:NO animated:YES];
}

UISearchBar のスコープ ボタンが表示されない iOS6を参照してください。

于 2013-02-26T20:40:33.333 に答える