2013-02-26 11 views
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:_searchBar.showsScopeBar = YES;と呼ぶ前後でintrinsicContentSize_searchBarであることを確認しましたが、サイズは実際に変更されます。

答えて

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's scope button won't show up iOS6

+0

を参照してください? Btw、それらの 'sizeToFit'sは必要ではありません。 – fumoboy007

+1

@ fumoboy007これらの 'sizeToFit'参照に関しては、それらは必要ではなく、それらを削除したということは間違いありません。ありがとう。 – Rob

関連する問題