2013-02-26 155 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; पर कॉल करने से पहले और बाद में _searchBar के intrinsicContentSize की जांच की गई और आकार वास्तव में बदल जाता है।

उत्तर

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

देखें तो यह एक एप्पल बग, सही है? बीटीडब्ल्यू, उन 'आकार टोफिट की जरूरत नहीं है। – fumoboy007

+1

@ fumoboy007 उन 'आकार टोफिट' संदर्भों के बारे में, आप सही हैं कि उनको जरूरी नहीं है और मैंने उन्हें हटा दिया है। धन्यवाद। – Rob