iOS UISearchBar背景颜色在iOS 9中

我一直在寻找这个问题,我希望我的search栏显示像BBC新闻应用程序 在BBC新闻APP中搜索栏

我尝试所有相关的方法

for view in searchBar.subviews { if view.isKindOfClass(NSClassFromString("UISearchBarBackground")!) { view.removeFromSuperview() break; } } self.searchBar.tintColor = UIColor.clearColor() self.searchBar.backgroundColor = UIColor.clearColor() self.searchBar.translucent = true 

这是我的输出 在这里输入图像说明

我想念什么? 请帮助我,thx!

Thx所有,我通过将背景图像设置为'nil'来解决这个问题,这是我的应用程序中不存在的图像

在这里输入图像说明

我最终的成果 在这里输入图像说明

******************更新最终解决scheme************************

阅读更多的文件后。 最后我find了更好的解决scheme

 for subView in searchBar.subviews { for view in subView.subviews { if view.isKindOfClass(NSClassFromString("UINavigationButton")!) { let cancelButton = view as! UIButton cancelButton.setTitle("取消", forState: UIControlState.Normal) cancelButton.setTitleColor(UIColor.whiteColor(), forState: .Normal) } if view.isKindOfClass(NSClassFromString("UISearchBarBackground")!) { let imageView = view as! UIImageView imageView.removeFromSuperview() } } } 

Swift 3

要完全删除背景,请将backgroundImage设置为空白图像:

 searchBar.backgroundImage = UIImage() 

要设置自定义背景色,请使用barTintcolor属性:

 searchBar.barTintColor = .green 

替代版本作为扩展

 extension UISearchBar { func removeBackgroundImageView(){ if let view:UIView = self.subviews.first { for curr in view.subviews { guard let searchBarBackgroundClass = NSClassFromString("UISearchBarBackground") else { return } if curr.isKind(of:searchBarBackgroundClass){ if let imageView = curr as? UIImageView{ imageView.removeFromSuperview() break } } } } } }