9

Ich habe ein Popover mit einer UITableViewController als Content-View-Controller. Die Tabellenansicht hat eine UISearchBar als Header-Ansicht.Zusätzlicher Platz über der Suchleiste, wenn UISearchDisplayController aktiv ist

Nun, auf iOS 6 sieht alles gut aus, wenn die UISearchDisplayController aktiv wird. Aber auf iOS 7 wird über der Suchleiste ein zusätzlicher Platz sein.

The extra space above the search bar on iOS 7

So wie kann ich diesen zusätzlichen Raum über der Suchleiste auf iOS 7 loswerden?

Antwort

25

Die Lösung besteht darin, die Eigenschaft edgesForExtendedLayout von UITableViewController auf UIRectEdgeNone zu setzen.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) { /// iOS 7 or above 
     self.edgesForExtendedLayout = UIRectEdgeNone; 
    } 
} 

Diese Eigenschaft hat den Wert UIRectEdgeAllby default. Dies bedeutet, dass alle Kanten der Ansicht erweitert werden, um zusätzlichen Platz für die Statusleiste zu erhalten (die Höhe des Raums über der Suchleiste beträgt genau 20 Pixel, die gleiche Höhe der Statusleiste).

+0

Vielen Dank! Übrigens habe ich die if-Bedingung entfernt, weil sie eine Warnung gibt, dass kein solcher Selektor implementiert wurde, und es funktioniert gut. – user1938695

+1

In Interface Builder können Sie einfach das Controller-Attribut 'Under Top Bars' im Abschnitt" Edges Edges "deaktivieren. –