改变UISearchBar Shap

时间:2017-07-09 10:08:43

标签: ios swift

我在项目中使用了UISearchBar,但我无法改变它的视图。我想在搜索栏周围设置边框。

我可以将UIsearchbar更改为与此图像相同吗?

enter image description here

4 个答案:

答案 0 :(得分:0)

您可以使用透明边框和背景以及下方设置不可见的搜索栏,只需添加图像/绘制子视图(如果您想要的形状)。我认为显式添加UIView:layer.cornerRadius = 4.0应该可以工作:)

答案 1 :(得分:0)

是的,您绝对可以将UISearchbar的外观更改为显示的图像。

基本上,您需要自定义UISearchBar和关联的UITextField的属性,并修改搜索按钮的可见性。

我找到了“这篇文章”,它将帮助您达到预期的效果。

http://en.codecloud.net/989.html

希望这有帮助。

答案 2 :(得分:0)

您可以将UISearchbar的外观自定义为:

// Get UISearchBar UITextFiled
let txfSearchField = Searchbar.value(forKey: "_searchField") as! UITextField

// set Search Bar texfield corder radius
txfSearchField.layer.cornerRadius = 8.0

// set Search Bar texfield border colour and width
txfSearchField.layer.borderWidth = 2.0
txfSearchField.layer.borderColor = UIColor.lightGray.cgColor

// set Search Bar tintColor.
Searchbar.barTintColor = UIColor.white

// Change the search bar placeholder text color
let placeholderlabels   = txfSearchField.value(forKey: "_placeholderLabel") as! UILabel
placeholderlabels.textColor = UIColor.lightGray

答案 3 :(得分:0)

如果您在不同的viewControllers中有许多自定义搜索栏。我使用了正确的答案并为searchBar制作了自定义类。我在故事板中使用过它。

import UIKit

class CustomSearchBar: UISearchBar {

    func setup(){
        // set Search Bar tintColor.
        self.backgroundImage = UIImage()
        self.barTintColor = UIColor.white

        // Get UISearchBar UITextFiled
        guard let textSearchField = self.value(forKey: "_searchField") as? UITextField else {
            return
        }

        // set Search Bar texfield corder radius
        textSearchField.layer.cornerRadius = 6.0

        // set Search Bar texfield border colour and width
        textSearchField.layer.borderColor = UIColor("#446D95").cgColor
        textSearchField.layer.borderWidth = 1.0
        textSearchField.layer.masksToBounds = true
    }
}

仅在您要使用searchBar的viewController的viewDidLoad中调用设置函数。

override func viewDidLoad(){
    searchBar.setup()
}