UISearchBar在iOS 11中的错误位置

Posted

技术标签:

【中文标题】UISearchBar在iOS 11中的错误位置【英文标题】:UISearchBar at wrong position in iOS 11 【发布时间】:2017-09-22 13:28:29 【问题描述】:

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 之间的空间可能有点太大了: 更改搜索栏的 backgroundColor 揭示出了什么问题:

因此,UISearchBar 在其父视图中的位置有点过高。有谁知道,是什么导致了 iOS 11 中的这种行为?

【问题讨论】:

【参考方案1】:

哇,我不知道,这从 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;

【讨论】:

请进一步澄清。我不明白。 UISearchBar 有一个名为 searchFieldBackgroundPositionAdjustment 的属性,它可以满足我的需要。只需将此属性设置为您指定的偏移量。

以上是关于UISearchBar在iOS 11中的错误位置的主要内容,如果未能解决你的问题,请参考以下文章

ios11:导航栏中的 UISearchBar

iOS 8.0 中的 UISearchBar barTintColor clearColor 错误

UITableViewController 中的 UISearchBar?

如何更改UISearchBar中文本字段的位置

ios 7中yelp和foursquare如何将UISearchBar中的搜索图标保持在左侧

UISearchBar 在 iOS 11 中增加导航栏高度