聚焦时如何调整UISearchController.searchBar的大小?

时间:2019-04-16 09:34:48

标签: ios objective-c xcode uisearchcontroller

很久以前,我们已经为iOS 5开发了一个应用程序,我们在storyboard上使用了“搜索栏和搜索显示控制器”对象。由于iOS8 UISearchDisplayControllerdeprecated,因此我尝试使用UISearchController删除现有的“搜索栏和搜索显示控制器”。

由于无法从界面上的“对象库”获得UISearchController,因此我已使用以下代码将其以编程方式添加到UIView上的interface

//Set up Search Controller
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = (id)self;
self.searchController.dimsBackgroundDuringPresentation = YES;
self.searchController.searchBar.delegate = self;

//Adding as subview to UIView 'searchBarContainer'
[self.searchBarContainer addSubview:self.searchController.searchBar];
[self.searchBarContainer bringSubviewToFront:self.searchController.searchBar];

self.definesPresentationContext = YES;
self.extendedLayoutIncludesOpaqueBars = YES;

并将“ searchController”的框架设置为与UIView相同,如下所示:

UISearchBar *ctrlSearchBar = self.searchController.searchBar;
ctrlSearchBar.frame = CGRectMake(0, 0, self.searchBarContainer.frame.size.width, self.searchBarContainer.frame.size.height);

searchBar的大小很好,但是当它专注于单击它时,“ searchBar”的宽度会自动增加。

我什至尝试使用NSLayoutConstraints,但没有解决问题。 任何人都可以帮助解决“ UISearchController.searchBar”的大小问题,即使它已被聚焦吗?

1 个答案:

答案 0 :(得分:0)

正如surToTheW在他的评论中建议的那样,我创建了一个带有UISearchController的自定义UIViewController。我将它作为子视图控制器添加到我的主UIViewController中,并且搜索栏未超出自定义UIViewController的视图宽度。