UISearchBar 在 iOS 11 中的错误位置
UISearchBar at wrong position in iOS 11
将我们的代码采用到 iOS 11,我正在努力处理位于 UINavigationController 中的 UISearchbar。
我这样设置 SearchController/SearchBar:
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];
}
当使用我们的默认颜色时,一切看起来都不错,但是 SearchBar 和 ScopeButtons 之间的 space 可能有点太大了:
更改搜索栏的 backgroundColor 揭示出了什么问题:
因此,UISearchBar 在其父视图中的位置有点太高了。有谁知道,是什么导致了 iOS 11 中的这种行为?
哇,我不知道,这是从 iOS 5 …
开始就存在的
[self.searchController.searchBar setSearchFieldBackgroundPositionAdjustment:UIOffsetMake(0.0, 8.0)];
见UISearchBar.h
@property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
将我们的代码采用到 iOS 11,我正在努力处理位于 UINavigationController 中的 UISearchbar。 我这样设置 SearchController/SearchBar:
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];
}
当使用我们的默认颜色时,一切看起来都不错,但是 SearchBar 和 ScopeButtons 之间的 space 可能有点太大了:
因此,UISearchBar 在其父视图中的位置有点太高了。有谁知道,是什么导致了 iOS 11 中的这种行为?
哇,我不知道,这是从 iOS 5 …
开始就存在的[self.searchController.searchBar setSearchFieldBackgroundPositionAdjustment:UIOffsetMake(0.0, 8.0)];
见UISearchBar.h
@property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;