IOS UISearchBar Background Color In iOS 9 IOS UISearchBar Background Color In iOS 9 swift swift

IOS UISearchBar Background Color In iOS 9


Swift 3

To remove the background altogether, set backgroundImage to an empty image:

searchBar.backgroundImage = UIImage()

To set a custom background color, use barTintcolor property:

searchBar.barTintColor = .green


Thx all , I solve the question by setting the background image to 'nil' , which is a nonexistent image in my app

enter image description here

my final output enter image description here

==================== Update Final Solution ====================

After read more documents . Finally I found a better solution ,

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()            }        }    }

==================== Update 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()            }        }    }


Alternate version as an extension

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                    }                }            }        }    }}