iOS 9中的IOS UISearchBar背景颜色

Ste*_*hen 10 search ios swift ios9

我一直在搜索这个问题,我希望我的搜索栏显示像BBC新闻应用程序SearchBar在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
Run Code Online (Sandbox Code Playgroud)

这是我的输出 在此输入图像描述

我错过了什么?请帮帮我,谢谢!

Mar*_*rný 23

斯威夫特3

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

searchBar.backgroundImage = UIImage()
Run Code Online (Sandbox Code Playgroud)

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

searchBar.barTintColor = .green
Run Code Online (Sandbox Code Playgroud)


Ste*_*hen 10

总而言之,我通过将背景图像设置为'nil'来解决问题,这是我的应用程序中不存在的图像

在此输入图像描述

我的最终输出 在此输入图像描述

==================== 更新最终解决 ====================

阅读更多文件后.最后我找到了更好的解决方案,

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()
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

==================== 更新Swift4 ====================

for subView in searchBar.subviews {
        for view in subView.subviews {
            if view.isKind(of: NSClassFromString("UINavigationButton")!) {
                let cancelButton = view as! UIButton
                cancelButton.setTitleColor(.white, for: .normal)
                cancelButton.setTitle("??", for: .normal)
            }
            if view.isKind(of: NSClassFromString("UISearchBarBackground")!) {
                let imageView = view as! UIImageView
                imageView.removeFromSuperview()
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)


LuA*_*dre 5

备用版本作为扩展名

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
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)