2017-09-22 4 views
1

Mit unserem Code für iOS 11 habe ich Probleme mit der UIS-Suchleiste im UINavigationController. stelle ich die SearchController/SearchBar so zusammen:UISearchBar bei falscher Position in iOS 11

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
self.searchController.searchBar.scopeButtonTitles = @[@"foo", @"bar"]; 
self.searchController.searchBar.showsScopeBar = YES; 
self.searchController.searchResultsUpdater = self; 
self.searchController.searchBar.delegate = self; 
self.searchController.delegate = self; 
self.searchController.dimsBackgroundDuringPresentation = NO; 
self.searchController.hidesNavigationBarDuringPresentation = NO; 
self.definesPresentationContext = YES; 
if (@available(iOS 11.0, *)) 
{ 
    self.navigationItem.searchController = self.searchController; 
    self.navigationItem.hidesSearchBarWhenScrolling = YES; 
    UISearchBar *searchbar = self.searchController.searchBar; 
    [searchbar setSomeColors]; 
} 

Wenn unsere Standardfarben verwenden, die Dinge könnten OK aussehen, aber der Raum zwischen SearchBar und ScopeButtons vielleicht ein bisschen zu groß sein: default layout die Backgroundcolor Ändern von Die Suchleiste verrät, was schief läuft: different coloring reveals the problem

So ist die UISearchBar in ihrer Superview etwas zu hoch platziert. Weiß jemand, was dieses Verhalten in iOS 11 verursacht?

Antwort

3

Whoa, ich hatte keine Ahnung, das seit iOS existierte 5 ...

[self.searchController.searchBar setSearchFieldBackgroundPositionAdjustment:UIOffsetMake(0.0, 8.0)]; 

UISearchBar.h Siehe

@property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR; 
+0

Bitte brauchen mehr clarification.I dint Sie erhalten. – nikhil

+1

Dort UISearchBar hat eine Eigenschaft namens searchFieldBackgroundPositionAdjustment, die das tut, was ich brauchte. Setzen Sie diese Eigenschaft einfach auf Ihren angegebenen Offset. – Tobias

Verwandte Themen