2013-02-26 3 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 : _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

관련 문제