我想通过配置navigationItem.searchController
将基于tableHeaderView
的搜索栏迁移到iOS 11中新的无缝搜索栏方法。
由于我的导航栏使用自定义背景图像,因此我想知道如何将相同的背景图像应用于搜索栏。我试过了
[navigationBar setBackgroundImage:[UIImage imageNamed:@"NavigationBarPromptBackground"] forBarMetrics:UIBarMetricsDefaultPrompt];
[searchBar setBackgroundImage:[UIImage imageNamed:@"NavigationBarBackground"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
无济于事。搜索栏保留标准导航栏背景(应用了barTintColor
),但不显示自定义背景图像。
就我而言,我在视图中有一个UISearchBar,而不是放置在UINavigationItem中。我设置的透明背景图像未显示在iOS 11中。但是,如果我添加一个高度约束,强制搜索栏变小,则背景图像会出于某种原因而被使用。这真的很奇怪的行为,一定是一个错误,但它现在对我有用。
如果我执行以下操作,将使用背景图像:
[[searchBar.heightAnchor constraintEqualToConstant:44.0] setActive:YES];
我在应用程序中做了一件非常相似的事情,并在 IOS11 上发现它现在已经坏了。这是我拥有的代码,它将我的图像设置在搜索和范围栏上,在IOS10之前工作正常:
[searchBarSearch setBackgroundImage:image];
[searchBarSearch setScopeBarBackgroundImage:image];
我通过将其添加到 .plist 来修复它
View controller-based status bar appearance = NO
现在我的栏是彩色的,并且随着我选择不同的选项而变化,就像在 IOS11 之前一样。
希望对您有所帮助!
血浆