iOS UISearchBar背景颜色在iOS 9中
我一直在寻找这个问题,我希望我的search栏显示像BBC新闻应用程序
我尝试所有相关的方法
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 } } } } } }