2017-07-05 38 views
4

我想通过配置navigationItem.searchController将基于tableHeaderView的搜索栏迁移到iOS 11中新的无缝搜索栏方法。附加的iOS 11样式的UISearchBar背景图片

由于我的导航栏使用自定义背景图像,所以我想知道如何将相同的背景图像应用于搜索栏。我试过

[navigationBar setBackgroundImage:[UIImage imageNamed:@"NavigationBarPromptBackground"] forBarMetrics:UIBarMetricsDefaultPrompt]; 
[searchBar setBackgroundImage:[UIImage imageNamed:@"NavigationBarBackground"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 

无济于事。搜索栏保留标准导航栏背景(应用barTintColor),但不显示自定义背景图像。

+0

使用外观代理? – matt

+0

外观代理只能自动设置普通属性,如果普通属性不能正常工作,则不起作用。 –

+2

这个iOS 11的变化真的是一场噩梦... 即使视图层次debuger显示正确的背景图像,但实际输出不显示它... 设置searchController是一回事,但如果定制不可能的,这个新功能没有用:( – manonthemoon

回答

1

我在我的应用程序中做了一个非常类似的事情,在IOS11上发现它现在已经坏了。这是我的代码有横跨搜索和范围酒吧设置我的形象,做工精细高达IOS10:

[searchBarSearch setBackgroundImage:image]; 
[searchBarSearch setScopeBarBackgroundImage:image]; 

我加入这个到现在的.plist

View controller-based status bar appearance = NO 

我吧修好了因为我选择了不同的选项,所以会变得有颜色和变化,就像IOS11之前那样

希望这可以帮助你!

等离子

+0

感谢,很高兴知道,但唉,回到传统的状态栏外观处理不是我的选择 –

+0

我看不到那个API'setBackgroundImage'。是只有一个具有多个参数栏指标等这是在iOS 11上打破 – manonthemoon

+0

这并不适用于我 – manonthemoon

3

在我来说,我有一个UISearchBar的观点,而不是放在UINavigationItem。我设置的透明背景图像没有出现在iOS 11中。但是,如果我添加一个高度约束,强制searchBar变小,背景图像会因为某种原因而被使用。这真是一个非常奇怪的行为,它必须是一个错误,但它现在正在为我工​​作。

如果我下面的背景图像被使用:

[[searchBar.heightAnchor constraintEqualToConstant:44.0] setActive:YES]; 
+0

固定高度时,您不会看到动画显示外观,对吗? –

+1

约束似乎不影响揭示动画。但是,当将其放置在导航栏内时,backgroundImage也未被使用。我没有这样使用,所以当我发布时我还没有测试过它。对不起,认为这值得一试。 – timeuser