如何在iOS10 Swift中清除UISearchBar背景颜色?

时间:2017-02-14 03:11:12

标签: ios swift uisearchbar ios10

由于UISearchBar中的布局更改,旧版iOS的此问题的旧版本不再有效。

我已尝试以下操作来完全删除UISearchBar的背景颜色,但它不起作用。 (我试图查找它的层次结构视图,但xCode一直在为此选项崩溃。)

private func clearBackgroundColor() {
    for view in self.subviews {
        view.backgroundColor = UIColor.clear
        for subview in view.subviews {
            subview.backgroundColor = UIColor.clear
        }
    }
} 

有任何想法或建议吗?

谢谢!

7 个答案:

答案 0 :(得分:10)

private func clearBackgroundColor() {
    guard let UISearchBarBackground: AnyClass = NSClassFromString("UISearchBarBackground") else { return }

    for view in self.subviews {
        for subview in view.subviews where subview.isKind(of: UISearchBarBackground) {
            subview.alpha = 0
        }
    }
}

这就是我最终所做的工作。谢谢大家的回答。

答案 1 :(得分:4)

我想你提到了搜索栏的BarTintColor

试试这个:

searchBar.barTintColor = .white

答案 2 :(得分:2)

试试这个。

class CustomSearchBar: UISearchBar {
    override func layoutSubviews() {
        super.layoutSubviews()
        clearBackgroundColor() // function in the question
    }
}

private func clearBackgroundColor() {
    for view in self.subviews {
        view.backgroundColor = UIColor.clear
        for subview in view.subviews {
            subview.backgroundColor = UIColor.clear
        }
    }
} 

答案 3 :(得分:2)

尝试设置backgroundimage: [searchBar setBackgroundImage:[UIImage new]];

答案 4 :(得分:1)

let searchBar = UISearchBar()
searchBar.backgroundImage = UIImage()

答案 5 :(得分:0)

只需在Interface Builder或代码中将搜索栏样式设置为.Minimal,背景就会变得透明。

enter image description here

答案 6 :(得分:0)

您可以在Interface Builder中将搜索样式更改为“最小”